YSlow дает противоречивые результаты на ETags - PullRequest
4 голосов
/ 21 января 2010

Когда я запускаю YSlow для своего сайта, я получаю «F» в пункте «Configure ETags»; он утверждает, что для многих (всех?) моих изображений, таблиц стилей и т. д. нет etags

Однако, если я запускаю тест на одном из этих изображений напрямую, я получаю оценку A на тесте etag. Кроме того, в заголовках Response панели Firebug Net я вижу etag для этого элемента как для полной страницы, так и для версии с прямым URL.

Могу ли я что-то сделать, чтобы вызвать это странное поведение?

(URL-адреса, по которым я нажимаю: здесь и здесь , если кто-то захочет проверить сами. запутался.)

Ответы [ 2 ]

5 голосов
/ 09 октября 2013

Мой ответ в отношении IIS 7 - игнорировать рекомендацию YSlow.

IIS 7 использует нулевое число метабазы ​​при создании ETag. Это часть после двоеточия ... поэтому etag всегда будет выглядеть примерно так: «5321116d3585ce1: 0», где первая часть создается из времени последнего измененного файла, а затем двоеточие и номер изменения метабазы.

Начиная с IIS 7, Microsoft постоянно устанавливает этот номер изменения на ноль, поэтому он будет одинаковым даже для нескольких веб-серверов. Для IIS 5 и 6 вы можете установить его на ноль, если хотите достичь того же конечного результата:

http://technet.microsoft.com/en-us/library/ee619764(WS.10).aspx

Если YSlow все еще использует правило регулярных выражений iis_re = new RegExp ("^ [0-9a-z] +: [0-9a-z] + $"); , тогда они неверно, и его следует переписать так, чтобы он принимался за действительный, если он заканчивается на : 0

2 голосов
/ 22 января 2010

только что попробовал это локально с FF 3.6 и YSlow 2.0.3 (недавно выпущенная версия), и автономное изображение дает оценку «B», ссылаясь на неправильно настроенные ETags.

ETag отображается в заголовке, вместе с панелью сети FireBug и на панели компонентов YSlow.

Но это по замыслу. Если вы посмотрите на http://developer.yahoo.com/performance/rules.html#etags, то увидите, что ETag по умолчанию, генерируемые IIS и Apache, не оптимальны.

Для справки, действительное правило lint в YSlow проверяет следующие два регулярных выражения:

  apache_re = new RegExp("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$");
  iis_re = new RegExp("^[0-9a-z]+:[0-9a-z]+$");
...