Конфигурация Apache Caching and Expires
Я ищу наилучшую конфигурацию кэширования / истекает для моей конкретной ситуации.
Я понимаю, что некоторые сайты выступают за отключение etags: заголовок сброшен ETag, FileETag Нет
Я знаю, что должен использовать либо Expires, либо Cache-Control. Кроме того, я знаю, что мне следует использовать либо Last-updated, либо ETAG (для документов ySlow).
Я унаследовал клиентский сервер, который использует следующее в.htaccess:
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|xml|txt|html|htm)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>
С этим сервером я не смогу полагаться на персонал для переименования изображений, css и js в веб-приложениях, поэтому я не хочу устанавливать истечение срока давности в будущем, не зная (с достаточной уверенностью), что "большинство / все" "браузеры будут проверять, изменился ли контент. Я не хочу, чтобы кто-то позвонил мне и сказал, что сайт сломан, потому что он заменил изображение, и оно не показывается
Но я хочу максимально использовать возможности кэширования и истечения срока их действия, сохраняя при этом, что в основном все браузеры проверяют сервер, чтобы определить, изменились ли компоненты.
У меня есть доступ к файлам.htaccess и apache.conf, и это один сервер, содержимое не развернуто на нескольких серверах.
Какова была бы лучшая конфигурация.htaccess или.conf для меня, чтобы достичь своих целей для этого клиентского сервера?
Спасибо за вашу помощь
2 ответа
Вы должны включить eTag, хотя некоторые люди рекомендуют против него при использовании балансировщиков нагрузки.
Для истечения срока действия и ограничения содержимого вы можете использовать mod_expires и указать, какие ресурсы и их возраст. Или вы можете установить этот httpd.conf
Набор заголовков Cache-Control "max-age=63072000, общедоступный"
Теперь, когда вы видите заголовки ваших ответов, вы увидите Cache-Control с возрастом. Я установил его на 2 года
> Cache-Control:max-age=63072000, public Connection:close Date:Thu, 22
> Oct 2015 17:09:31 GMT ETag:"2b7e6-a9777-523307081ff00"
> Server:Apache/2.2.3 Vary:Accept-Encoding,User-Agent
В основном, убедитесь, что сервер отправляет Etag
а также Last-Modified
заголовки (которые позволяют клиентам проверять, изменился ли ресурс без его фактической загрузки), и установить Expires
а также Cache-Control: max-age
Заголовки как можно дальше в будущем. Если статический контент будет изменен без переименования, лучшее, что вы можете сделать, это настроить его так, чтобы он охватывал типичную сессию просмотра (например, 15 минут).