Ответы:
html5boilerplate.com содержит хорошо прокомментированный файл .htaccess, который имеет много стандартных настроек, которые вы должны учитывать. Среди них есть разумные настройки для истечения срока действия контента (Expires, E-tags, ...).
Обратите внимание, что Last-Modified
заголовки являются слабыми заголовками кэша. Текущее предпочтение - использовать Cache-Control
заголовки.
У Google есть хорошая статья на эту тему.
Срок действия и Cache-Control: максимальный возраст. Они определяют «время жизни свежести» ресурса, то есть период времени, в течение которого браузер может использовать кэшированный ресурс, не проверяя, доступна ли новая версия с веб-сервера. Это «сильные заголовки кэширования», которые применяются безоговорочно; то есть после того, как они установлены и ресурс загружен, браузер не будет выдавать какие-либо запросы GET для ресурса до истечения срока действия или максимального срока действия.
Последнее изменение и ETag. Они определяют некоторые характеристики ресурса, которые браузер проверяет, чтобы определить, совпадают ли файлы. В заголовке Last-Modified это всегда дата. В заголовке ETag это может быть любое значение, однозначно идентифицирующее ресурс (типичные версии файлов или хэши содержимого). Last-Modified - это «слабый» кеширующий заголовок, в котором браузер применяет эвристику, чтобы определить, извлечь элемент из кэша или нет. (Эвристика различна для разных браузеров.) Однако эти заголовки позволяют браузеру эффективно обновлять свои кэшированные ресурсы, выполняя условные запросы GET, когда пользователь явно перезагружает страницу. Условные GET не возвращают полный ответ, если ресурс не был изменен на сервере, и поэтому имеют меньшую задержку, чем полные GET.
Я рекомендую использовать либо Cache-Control
или Expires
заголовки по мере необходимости , так как они являются сильными заголовками кэша. Некоторые системы будут игнорировать даты последнего изменения.
Затем вы можете использовать инструмент вроде curl
или http://redbot.org для проверки заголовков.
Last-Modified
заголовков при отсутствии других инструкций кэширования оставляет период кэширования вплоть до HTTP-клиента. Если ресурс не был изменен с Last-Modified
даты, ресурс следует считать свежим. Напротив, при использовании заголовка Expires
или или Cache-Control
источник может установить явный период свежести.
Expires
совершенно неуместный заголовок для ресурсов, срок действия которых не истек. Некоторые ресурсы могут быть изменены, но не в какой-то срок годности. Идея Google заключается в том, чтоLast-Modified
требуется условное GET, тогдаExpires
как кеш браузера позволяет вообще пропустить GET.