14.9.3. Модификации основного механизма устаревания
Время expiration объекта может быть указано сервером происхождения, используя заголовок Expires (см. раздел 14.21). Альтернативно, он может быть указан, используя директиву max-age в ответе.
Если ответ включает и заголовок Expires и директиву max-age, директива max-age отменяет заголовок Expires, даже если заголовок Expires является более ограничительным. Это правило позволяет серверу происхождения предоставлять, для данного ответа, более длинное время expiration к HTTP/1.1 (или позже) кэш чем к HTTP/1.0 кэш. Это может быть полезно, если определенный HTTP/1.0 кэши ненадлежащим образом вычисляет возрасты или времена expiration, возможно из-за десинхронизируемых часов.
Обратите внимание: Большинство старших кэшей, не совместимых с этой спецификацией, не реализует директив Cache-Control. Сервер происхождения, желающий использовать директиву Cache-Control, которая ограничивает, но не предотвращает, кэшируя HTTP/1.1-compliant, кэширует, может использовать требование, чтобы директива max-age отменила заголовок Expires, и факт, что non-HTTP/1.1-compliant кэши не наблюдают директиву max-age.
Другие директивы позволяют user agent изменять основной механизм expiration. Эти директивы могут быть указаны на запросе:
- max-age
- Указывает, что клиент желает принять ответ, возраст которого не больше чем указанное время мгновенно. Если директива max-stale также не включена, клиент не желает принять устарелый ответ.
- min-fresh
- Указывает, что клиент желает принять ответ, время существования свежести которого — не меньше чем его текущий возраст плюс указанное время мгновенно. Таким образом, клиент хочет ответ, который все еще будет нов для по крайней мере указанного числа секунд.
- max-stale
- Указывает, что клиент желает принять ответ, который превысил его время expiration. Если max-stale назначен значение, то клиент желает принять ответ, который превысил его время expiration не больше, чем указанным числом секунд. Если никакое значение не назначено max-stale, то клиент желает принять устарелый ответ любого возраста.
Если кэш возвращает устарелый ответ, или из-за директивы max-stale по запросу, или потому что кэш конфигурирован, чтобы отменить время expiration ответа, кэш ДОЛЖЕН прикрепить заголовок Warning к устарелому ответу, используя Warning 10 (Ответ является устарелым).