Как настроить Apache 2.2.3 для отправки «последних изменений» и т. Д.

9

и сказать браузеру перезагрузить объект (и / или страницу ... все на сайте), только если он был изменен с момента последнего посещения ??? htaccess, httpd.conf ... у вас есть готовая директива для моего случая? спасибо Большое

smepie
источник

Ответы:

5

Обратите внимание, что Last-Modifiedзаголовки являются слабыми заголовками кэша. Текущее предпочтение - использовать Cache-Controlзаголовки.

У Google есть хорошая статья на эту тему.

Оптимизировать кеширование

Срок действия и Cache-Control: максимальный возраст. Они определяют «время жизни свежести» ресурса, то есть период времени, в течение которого браузер может использовать кэшированный ресурс, не проверяя, доступна ли новая версия с веб-сервера. Это «сильные заголовки кэширования», которые применяются безоговорочно; то есть после того, как они установлены и ресурс загружен, браузер не будет выдавать какие-либо запросы GET для ресурса до истечения срока действия или максимального срока действия.

Последнее изменение и ETag. Они определяют некоторые характеристики ресурса, которые браузер проверяет, чтобы определить, совпадают ли файлы. В заголовке Last-Modified это всегда дата. В заголовке ETag это может быть любое значение, однозначно идентифицирующее ресурс (типичные версии файлов или хэши содержимого). Last-Modified - это «слабый» кеширующий заголовок, в котором браузер применяет эвристику, чтобы определить, извлечь элемент из кэша или нет. (Эвристика различна для разных браузеров.) Однако эти заголовки позволяют браузеру эффективно обновлять свои кэшированные ресурсы, выполняя условные запросы GET, когда пользователь явно перезагружает страницу. Условные GET не возвращают полный ответ, если ресурс не был изменен на сервере, и поэтому имеют меньшую задержку, чем полные GET.

Я рекомендую использовать либо Cache-Controlили Expiresзаголовки по мере необходимости , так как они являются сильными заголовками кэша. Некоторые системы будут игнорировать даты последнего изменения.

Затем вы можете использовать инструмент вроде curlили http://redbot.org для проверки заголовков.

jeffatrackaid
источник
2
FWIW: «слабый» - это то, что придумал Google. Expiresсовершенно неуместный заголовок для ресурсов, срок действия которых не истек. Некоторые ресурсы могут быть изменены, но не в какой-то срок годности. Идея Google заключается в том, что Last-Modifiedтребуется условное GET, тогда Expiresкак кеш браузера позволяет вообще пропустить GET.
Dancrumb
1
Термин слабый - это просто семантика. Дело в том, что использование Last-Modifiedзаголовков при отсутствии других инструкций кэширования оставляет период кэширования вплоть до HTTP-клиента. Если ресурс не был изменен с Last-Modifiedдаты, ресурс следует считать свежим. Напротив, при использовании заголовка Expiresили или Cache-Controlисточник может установить явный период свежести.
Jeffatrackaid
1
«слабый» v «сильный» определяется по адресу tools.ietf.org/html/rfc7232#section-2.1 (Примечание также к @Dancrumb)
Джон Бентли,