Модуль 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 — одним из следующих значений:
yearsmonthsweeksdayshoursminutesseconds
Например, любую из следующих директив можно использовать, чтобы по умолчанию срок действия документов истекал через 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