Apache Etags, нужна помощь?
В настоящее время мы не используем заголовки Expire, я собирался порекомендовать это, но заставлять нашу большую команду разработчиков / бизнес менять свои методы и переименовывать статические файлы с каждым новым выпуском будет нелегко получить обновленные файлы.
Я запустил YSlow, и мы получили F для Etags: "Есть 24 компонента с неправильно настроенными ETag". 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 Дата изменения: вторник, 06 сентября 2011 г. 20:59:29 GMT Сервер: IBM_HTTP_Server Соединение: Keep-Alive Keep-Alive: timeout = 6 Etag: "21246-eb05-4a8b30415ea00"
1) Я вижу "304 Не изменено" для файлов изображений,js,html и т. Д. На нашей целевой странице. Почему Ислоу говорит, что у нас есть некоторые неправильно настроенные Etags, когда все они настроены на одну и ту же конфигурацию Apache по умолчанию? В отчете YSlow упоминаются те же типы файлов.
2) У нас есть балансировщик нагрузки F5 между несколькими веб-серверами Apache, мы используем липкие биты, поэтому я думаю, что индекс Etag Apache не слишком беспокоит нас. Но если пользователь вернется завтра и подключится к другому веб-серверу, мы потеряем правильную опцию кэширования, потому что они будут другими? Должны ли мы изменить httpd.conf и удалить переменную inode Etag со всех веб-серверов?
Извините за длину! Спасибо
2 ответа
1) Может быть, сообщение не о статических файлах, а о другом доставленном контенте, который не имеет ETag (например, страницы PHP, вывод CGI и т. Д.)?
2) Да, вы должны удалить индекс из тега, а также убедиться, что файлы имеют одинаковую метку времени на всех серверах.
C. Рэмсиер прав. Вот конфиг, который я использую, чтобы 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"