13.2.4 Расчет срока годности
Чтобы решить, является ли
ответ свежий или несвежий, нам нужно
сравнить его свежесть жизни с его
возраст. Возраст рассчитывается как
описано в разделе 13.2.3; этот
раздел описывает, как рассчитать
свежесть жизни, а также
определить, истек ли срок ответа.
В обсуждении ниже, значения
может быть представлен в любой форме
подходит для арифметических операций.
Мы используем термин «expires_value» для
Обозначим значение Expires
заголовок. Мы используем термин
"max_age_value", чтобы обозначить
соответствующее значение числа
секунд, переносимых «максимальным возрастом»
директива Cache-Control
заголовок в ответе (см. раздел
14.9.3).
Директива максимального возраста принимает
приоритет над Истекает, поэтому, если максимальный возраст
присутствует в ответе,
Расчет прост:
freshness_lifetime = max_age_value
В противном случае, если Expires присутствует в
ответ, расчет:
freshness_lifetime = expires_value - date_value
Обратите внимание, что ни один из этих
расчеты уязвимы для часов
перекос, так как вся информация
приходит с исходного сервера.
Если ни один из Истекает, Cache-Control:
max-age или Cache-Control: s-
maxage (см. раздел 14.9.3) появляется в
ответ, и ответ делает
не включать другие ограничения на
кеширование, кеш МОЖЕТ вычислить
свежесть жизни с помощью эвристики.
Кэш ДОЛЖЕН прикрепить Предупреждение 113
на любой ответ, чей возраст превышает
24 часа, если такого предупреждения нет
уже добавлено.
Кроме того, если ответ имеет
Время последнего изменения, эвристика
Срок годности ДОЛЖЕН быть не более
чем некоторая доля интервала
С этого момента. Типичная настройка
эта доля может составлять 10%.
Расчет, чтобы определить, является ли
срок ответа истек вполне
простой:
response_is_fresh = (freshness_lifetime > current_age)