Йслоу говорит, что etags неправильно настроены. как правильно настроить etags на IIS7?

20

запустив ySlow на сайте, который я поддерживаю, я заметил, что он сообщает, что etags неправильно настроены для изображений сайта (например, * .jpg, * .png, * .gif). Может кто-нибудь помочь объяснить, что я должен сделать, чтобы IIS7 правильно выполнил эти etags?

MikeJ
источник

Ответы:

7

Принятый ответ Farseeker не работает. Я проверял это в IIS 7.0.6000.16386 на Windows Server 2008 Standard SP 2.

См. Комментарий Джеффа Этвуда о переполнении стека по тому же вопросу .

nickh
источник
Этот ответ больше не является правильным / актуальным. Вы можете изменить ETag в iis 7+, добавив правило для исходящих сообщений, как показано в моем ответе serverfault.com/a/528346/78230
AndrewPK
12

Этаги в порядке, если вы не обслуживаете контент с нескольких серверов. Если вы обслуживаете только с одного сервера, оставьте их там. Они не болят. И если вы не хотите, чтобы YSlow жаловался на них, нажмите кнопку « Изменить» рядом с элементом выбора наборов правил и отредактируйте профиль YSlow (V2). Просто снимите флажок «Настроить теги сущностей (Etags)».

Ionuț G. Stan
источник
7
+1 YSlow жалуется на то, что многие вещи не влияют на «простые смертные» сайты. (Нет, да, у меня нет и мне не нужен CDN. Пожалуйста, прекрати ныть уже.)
Джеральд Комбс
Правда об изменении набора правил.
MikeJ
11

YSlow не жалуется, что они не правы (хотя это то, что говорится), но жалуется, что они не нужны. Единственный способ заставить YSlow замолчать об этом - это отключить их.

Хорошо, что я сделал это сам сегодня раньше!

Откройте диспетчер IIS, нажмите на сервер и перейдите к заголовкам ответа HTTP. Нажмите кнопку «Добавить ...» и под именем введите:

ETag

(деликатный случай). Под значением введите

""

(вот две двойные кавычки)

И ETags никому не нужны!

Марк Хендерсон
источник
Как отмечают другие, вы должны удалять ETag, только если знаете, что это необходимо; во многих случаях это не будет иметь место.
Бобби Джек,
1
Это может иметь место, но факт в том, что ответ правильно отвечает на вопрос.
Марк Хендерсон
1
Был задан вопрос: «Как заставить IIS7 правильно выпускать эти etags?». Ваш ответ состоял в том, чтобы вообще прекратить выпуск ETag, что является возможным ударом по производительности и, вероятно, излишним (в вопросе не упоминалось об использовании CDN).
Бобби Джек,
2
@Bobby: OP неявно спрашивает: «Как заставить IIS7 правильно выдавать эти etags, как это определено в YSlow ?». и единственная «правильная» конфигурация, что касается YSlow, - это их отключение.
Кип
1
@Kip, нет, неявная часть неявная, и вы не можете догадаться об этом. Но предполагая, что ОП - разумный человек, он, вероятно, хотел сказать: «Согласно YSlow, конфигурация кажется неоптимальной, как я могу сделать ее оптимальной?» - А потом этот ответ немного смешной. Это как "почему мой модульный тест жалуется?" - «Просто удалите модульный тест, и он больше не будет жаловаться!»
chiccodoro
3

В iis 6 вы можете добавить собственный заголовок для 'ETag' = ""

В iis 7 добавьте правило исходящей перезаписи следующим образом:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

IIS 7 перезапишет пользовательские заголовки и все другие решения, предложенные в различных других ответах относительно той же проблемы. Исходящие правила - это единственный элемент, который, кажется, работает, поскольку он перезаписывает все, что задано непосредственно перед его возвратом пользователю. Это предлагаемое правило для исходящих запросов соответствует любой серверной переменной с указанным RESPONSE_ETagименем, если значение RESPONSE_ETagимеет один или несколько символов, и перезаписывает значение в пустую строку.

AndrewPK
источник
1

Лучше использовать это:

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>
user197693
источник
3
Добро пожаловать в сбой сервера! Хотя магические байты, безусловно, хороши, для других людей это прекрасно, если вы объясните, почему это правильно.
Сокол Момот