Header
- это директива mod_headers , которая позволяет изменять поля заголовка HTTP. В этом случае Header set
эффективно устанавливает указанные поля заголовка Cache-Control и Expires , поэтому уже существующее поле заголовка будет перезаписаны.
Первая директива устанавливает поле заголовка Cache-Control со значением max-age=290304000
, которое описывает время жизни свежести 290304000 секунд относительно времени отклика.
В отличие от этого, вторая директива устанавливает поле заголовка Expires со значением Thu, 15 Apr 2020 20:00:00 GMT
, которое описывает время жизни свежести с абсолютным значением времени.
Оба Cache-Control max-age значение и Expires метку времени истечения можно преобразовать в другой :
4.2.1. Расчет свежести Lifetime
Кэш может рассчитывать время жизни свежести (обозначается как
freshness_lifetime) ответа с использованием первого совпадения
следующее:
...
Если имеется директива о максимальном возрасте ( Раздел 5.2.2.8 ),
используйте его значение или
Если имеется поле заголовка ответа Expires ( Section 5.3 ), используйте
его значение минус значение поля заголовка ответа Дата, или
...
Но если присутствуют оба, Cache-Control 's max-age предпочтительнее, чем Срок действия :
Если ответ содержит поле Cache-Control с максимальным возрастом
Директива ( Раздел 5.2.2.8 ), получатель ДОЛЖЕН игнорировать Expires
поле. Аналогично, если ответ включает в себя директиву s-maxage
( Раздел 5.2.2.9 ), получатель общего кэша ДОЛЖЕН игнорировать Expires
поле. В обоих этих случаях значение в Expires предназначено только для
для получателей, которые еще не внедрили поле Cache-Control.
Вместо установки этих полей заголовка элемента управления HTTP-кэшированием вручную, mod_expires ExpiresDefault
директива позволяет легко настроить HTTP-кэширование. Время жизни свежести может быть описано либо с абсолютным значением, либо с относительным значением, либо относительно времени отклика (т.е. access
/ now
), либо относительно времени модификации запрошенного файла (т.е. modification
). Он использует Cache-Control и Expires .
В этом случае третья директива устанавливает срок действия свежести по умолчанию равным 10 годам с момента ответа.
Я бы использовал mod_expires для управления кэшем HTTP вместо того, чтобы делать это вручную с Header
. Это гораздо удобнее, позволяет относительное и абсолютное время обновления и использует Cache-Control и Expires .