Expires
Применение
Заголовок Expires задаёт абсолютную метку времени, указывающую, когда кэшированный ответ теряет свежесть. Кэши сравнивают эту метку с текущим временем, чтобы решить, пригодна ли ещё сохранённая копия.
Директива Cache-Control max-age имеет приоритет над Expires, когда присутствуют обе. Поскольку max-age использует относительное значение в секундах вместо абсолютной даты, эта директива избавляет от проблем с расхождением часов между серверами и кэшами. Современные политики кэширования опираются на Cache-Control как на основной механизм свежести, а Expires служит запасным вариантом для старых кэшей без поддержки max-age.
Значение 0 или недопустимая дата означают, что ответ уже устарел. Кэши сразу считают запись просроченной, что вынуждает выполнить повторную валидацию или заново загрузить ресурс при следующем запросе.
Метка времени записывается в том же формате IMF-fixdate, который используется заголовком Date:
Expires: <day-name>, <day> <month> <year>
<hour>:<minute>:<second> GMT
Примечание
Когда в том же ответе присутствует Cache-Control: max-age, значение Expires игнорируется. В новых реализациях отдавайте предпочтение max-age.
Пример
Ответ, срок действия которого истекает в среду в 08:00 UTC. Любой кэш, хранящий этот ответ после указанного времени, считает копию устаревшей.
Expires: Wed, 04 Jun 2025 08:00:00 GMT
Ответ, помеченный как уже просроченный. Значение 0 заставляет кэши выполнять повторную валидацию при каждом запросе.
Expires: 0
Заголовок Expires в паре с Cache-Control ради обратной совместимости. Директива max-age имеет приоритет, давая ответу час свежести независимо от метки времени в Expires.
Cache-Control: max-age=3600
Expires: Thu, 01 Jan 1970 00:00:00 GMT