YSlow, дающий противоречивые результаты по ETags

StackOverflow https://stackoverflow.com/questions/2107265

  •  22-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

ETag отображается в заголовке, bith на панели FireBug net и на панели компонентов 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]+$");

Другие советы

Мой ответ, касающийся 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 = новое регулярное выражение("^[0-9a-z]+:[0-9a-z]+$"); тогда они ошибочны, и его следует переписать, чтобы принять etag как действительный, если он заканчивается на :0

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top