В настоящее время мы не используем заголовки Expire, я собирался порекомендовать это, но заставить нашу большую команду разработчиков / бизнес менять свои методы и переименовывать статические файлы с каждым новым выпуском будет нелегко для получения обновленных файлов.
Я запустил YSlow, и мы получили F для Etags: «24 компонента с неправильно настроенными ETags». В Apache httpd.conf нет Etags, настроенных вручную, поэтому, похоже, мы используем настройки по умолчанию. (FileETag INode MTime Size). Когда я захожу на наш сайт и нажимаю кнопку «Обновить», я вижу, что Etags работают довольно хорошо:
Пример одного изображения: If-Modified-Since: Sat, 23 Jul 2011 02:05:28 GMT If-None-Match: "21246-eb05-4a8b30415ea00" Cache-Control: max-age = 0
HTTP / 1.1 304 Не изменено Дата: Вт, 6 сентября 2011 г., 20:59:29 GMT Сервер: IBM_HTTP_Server Соединение: Keep-Alive Keep-Alive: timeout = 6 Etag: "21246-eb05-4a8b30415ea00"
1) Я вижу "304 Not Modified" для файлов изображений, js, html и т. Д. На нашей целевой странице. Почему Ислоу говорит, что у нас есть несколько неправильно настроенных тегов Etags, когда все они настроены с одной и той же конфигурацией Apache по умолчанию? В отчете YSlow упоминаются те же типы файлов.
2) У нас есть балансировщик нагрузки F5 между несколькими веб-серверами Apache, мы используем липкие биты, поэтому я думаю, что Etag инода Apache нас не слишком беспокоит. Но если пользователь вернется завтра и зайдет на другой веб-сервер, мы потеряем правильную опцию кеширования, потому что они будут другими? Следует ли нам изменить httpd.conf и удалить переменную индекса Etag со всех веб-серверов?
Извините за длину! Спасибо
1) Может быть, сообщение не о статических файлах, а о другом доставленном контенте, который не имеет ETags (например, страницы PHP, вывод CGI и т. Д.)?
2) Да, вам следует удалить индексный дескриптор из тега, а также убедиться, что файлы имеют одинаковую временную метку на всех серверных ВМ.
К. Рэмзиер прав. Вот конфигурация, которую я использую, чтобы YSlow был доволен:
<Directory /path/to/files>
FileETag MTime Size
ExpiresActive On
ExpiresDefault "access plus 1 week"
ExpiresByType text/html "access plus 1 week"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
</Directory>
Будь уверен, что у вас все в порядке с кешированием страниц на 1 неделю. Например, если у вас есть блог, который обновляется ежедневно, при использовании вышеуказанной настройки список сообщений будет кэшироваться на 1 неделю. В этом случае вы можете использовать ExpiresDefualt "access"