YSlow дает противоречивые результаты для ETag

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

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

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

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


person Craig Walker    schedule 21.01.2010    source источник


Ответы (2)


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

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

Но это по дизайну. Если вы посмотрите на http://developer.yahoo.com/performance/rules.html#etags вы увидите, что ETags по умолчанию, сгенерированные 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]+$");
person David Henderson    schedule 22.01.2010
comment
Еще более странно с оценкой B. Я попробую обновить и посмотреть, что я получаю. Спасибо! - person Craig Walker; 22.01.2010
comment
Я думаю, что проблема YSlow заключается в том, что, хотя ETag присутствуют, способ, которым их генерирует IIS, делает их действительно неэффективными и меняются слишком часто. Это означает, что пользователи будут получать на 200 кодов ответов чаще, чем должны. (Ссылка YSlow объясняет лучше, чем я!) - person David Henderson; 22.01.2010

Мой ответ в отношении 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]+$");, то они ошибаются, и его следует переписать, чтобы etag считался действительным, если он заканчивается на :0.

person Aaron B    schedule 09.10.2013