Конфигурация 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 минут).

Другие вопросы по тегам