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


20

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

Ответы:


7

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

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


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

12

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


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имеет один или несколько символов, и перезаписывает значение в пустую строку.



1

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

<outboundRules>
  <rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern="(.*)\:(.*)" />
    <action type="Rewrite" value="{R:1}" />
  </rule>
</outboundRules>

3
Добро пожаловать в сбой сервера! Хотя магические байты, безусловно, хороши, для других людей это прекрасно, если вы объясните, почему это правильно.
— Сокол Момот
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.