Spec-Zone.ru › Apache HTTP Server

Модуль Apache mod_expires

Описание: Формирование заголовков HTTP Expires и Cache-Control согласно критериям, заданным пользователем
Статус: Расширение
Идентификатор модуля: expires_module
Исходный файл: mod_expires.c

Краткое описание

Этот модуль управляет установкой заголовка HTTP Expires и директивы max-age заголовка HTTP Cache-Control в ответах сервера. Дату истечения срока действия можно задать относительно времени последнего изменения исходного файла или времени обращения клиента.

Эти заголовки HTTP сообщают клиенту о сроке действия документа и его сохранении в кэше. Если документ кэширован, до истечения этого срока его можно получать из кэша, а не из источника. После этого копия в кэше считается «просроченной» и недействительной, поэтому необходимо получить новую копию из источника.

Чтобы изменить директивы Cache-Control, отличные от max-age (см. раздел 14.9 RFC 2616), можно использовать директиву Header.

Если заголовок Expires уже присутствует в ответе, сформированном сервером, например, если он был сформирован скриптом CGI или получен через прокси-сервер от исходного сервера, этот модуль не изменяет и не добавляет заголовки Expires или Cache-Control.

Альтернативный синтаксис интервалов

Директивы ExpiresDefault и ExpiresByType также можно задать в более читаемом синтаксисе следующего вида:

ExpiresDefault "base  [plus num type] [num type] ..."
ExpiresByType type/encoding "base  [plus num type] [num type] ..."

где base — одно из следующих значений:

  • access
  • now (эквивалентно «access»)
  • modification

Ключевое слово plus указывать необязательно. num должно быть целым числом [допустимым для atoi()], а type — одним из следующих значений:

  • years
  • months
  • weeks
  • days
  • hours
  • minutes
  • seconds

Например, любую из следующих директив можно использовать, чтобы по умолчанию срок действия документов истекал через 1 месяц после обращения к ним:

ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"

Время истечения срока действия можно настроить точнее, добавив несколько выражений «num type»:

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"

Обратите внимание: если используется настройка, основанная на дате изменения, заголовок Expires не будет добавлен к содержимому, полученному не из файла на диске. Это связано с тем, что у такого содержимого нет времени изменения.

Директива ExpiresActive

Описание: Включает формирование заголовков Expires
Синтаксис:
ExpiresActive On|Off
Значение по умолчанию:
ExpiresActive Off
Контекст: конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределение: Indexes
Статус: Расширение
Модуль: mod_expires

Эта директива включает или отключает формирование заголовков Expires и Cache-Control для указанной области документов. (То есть, если директива указана, например, в файле .htaccess, она применяется только к документам, сформированным из этого каталога.) Если задано значение Off, заголовки не будут формироваться для документов в этой области (если только настройка не переопределена на более низком уровне, например, если файл .htaccess переопределяет файл конфигурации сервера). Если задано значение On, заголовки будут добавляться к отдаваемым документам согласно критериям, заданным директивами ExpiresByType и ExpiresDefault (см.).

Обратите внимание: эта директива не гарантирует формирование заголовка Expires или Cache-Control. Если критерии не соблюдены, заголовок отправлен не будет, и эффект будет таким же, как если бы эта директива вообще не была указана.

Директива ExpiresByType

Описание: Значение заголовка Expires, задаваемое по типу MIME
Синтаксис:
ExpiresByType MIME-type <code>seconds
Контекст: конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределение: Indexes
Статус: Расширение
Модуль: mod_expires

Эта директива задает значение заголовка Expires и директивы max-age заголовка Cache-Control, формируемых для документов указанного типа (например, text/html). Второй аргумент задает количество секунд, которое будет добавлено к базовому времени для вычисления даты истечения срока действия. Значение Cache-Control: max-age вычисляется путем вычитания времени запроса из даты истечения срока действия; результат выражается в секундах.

В качестве базового времени используется либо время последнего изменения файла, либо время обращения клиента к документу. Выбор задается полем <code>: M означает, что в качестве базового следует использовать время последнего изменения файла, а A — что следует использовать время обращения клиента.

Разница в эффекте невелика. Если используется M, все существующие копии документа во всех кэшах истекут одновременно. Это может быть полезно, например, для еженедельного уведомления, которое всегда доступно по одному URL. Если используется A, дата истечения срока действия будет разной для каждого клиента; это может быть полезно для файлов изображений, которые меняются нечасто, особенно для набора связанных документов, ссылающихся на одни и те же изображения (то есть, обращения к изображениям будут повторяться в течение относительно короткого промежутка времени).

Пример:

# enable expirations
ExpiresActive On
# expire GIF images after a month in the client's cache
ExpiresByType image/gif A2592000
# HTML documents are good for a week from the
# time they were changed
ExpiresByType text/html M604800

Обратите внимание: эта директива действует только в том случае, если указана директива ExpiresActive On. Она переопределяет дату истечения срока действия, заданную директивой ExpiresDefault, только для указанного типа MIME.

Также можно задать способ вычисления времени истечения срока действия с помощью альтернативного синтаксиса, описанного выше в этом документе.

Директива ExpiresDefault

Описание: Алгоритм по умолчанию для вычисления времени истечения срока действия
Синтаксис:
ExpiresDefault <code>seconds
Контекст: конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределение: Indexes
Статус: Расширение
Модуль: mod_expires

Эта директива задает алгоритм по умолчанию для вычисления времени истечения срока действия всех документов в затронутой области. Его можно переопределить для отдельных типов с помощью директивы ExpiresByType. Подробное описание синтаксиса аргумента см. в описании этой директивы, а также в описании альтернативного синтаксиса.

© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_expires.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API