RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

14.9. Cache-Control

Общее поле заголовка Cache-Control используется, чтобы определить директивы, которым ДОЛЖНЫ повиноваться все кэширующие механизмы вдоль цепочки запроса/ответа. Директивы определяют, что поведение должно было предотвратить кэши от неблагоприятного сталкивания с запросом или ответом. Эти директивы обычно отменяют значение по умолчанию, кэширующее алгоритмы. Директивы кэша однонаправлены в этом, присутствие директивы в запросе не подразумевает, что та же самая директива должна быть дана в ответе.

Обратите внимание: Тот HTTP/1.0 кэши, возможно, не реализует Cache-Control и может только реализовать Pragma: no-cache (см. раздел 14.32).

Через директивы кэша нужно пройти прокси или межсетевым приложением, независимо от их значения для того приложения, так как директивы могут быть применимыми ко всем получателям вдоль цепочки запроса/ответа. Он не возможен определить cachedirective для специфичного кэша.

Cache-Control   = "Cache-Control" ":" 1#cache-directive

cache-directive = cache-request-directive
                | cache-response-directive
cache-request-directive =
                  "no-cache" [ "=" <"> 1#field-name <"> ]
                | "no-store"
                | "max-age" "=" delta-seconds
                | "max-stale" [ "=" delta-seconds ]
                | "min-fresh" "=" delta-seconds
                | "only-if-cached"
                | cache-extension

cache-response-directive =
                  "public"
                | "private" [ "=" <"> 1#field-name <"> ]
                | "no-cache" [ "=" <"> 1#field-name <"> ]
                | "no-store"
                | "no-transform"
                | "must-revalidate"
                | "proxy-revalidate"
                | "max-age" "=" delta-seconds
                | cache-extension

cache-extension = token [ "=" ( token | quoted-string ) ]

Когда директива появляется без любого 1#field-name parameter, директива применяется ко всему запросу или ответу. Когда такая директива появляется с 1#field-name parameter, она применяется только к именованному полю или полям, а не к остальной части запроса или ответа. Этот механизм поддерживает расширяемость; реализации будущих версий протокола HTTP могут применить эти директивы к полям заголовка, не определенным в HTTP/1.1.

Директивы управления кэша могут быть разделены на эти общие категории:

  • Ограничения на том, что является cachable; они могут только быть наложены сервером происхождения.
  • Ограничения на том, что может быть сохранено кэшем; они могут быть наложены или сервером происхождения или user agent.
  • Модификации основного механизма expiration; они могут быть наложены или сервером происхождения или user agent.
  • Контроль за приданием вновь юридической силы кэша и перезагрузкой; они могут только быть наложены user agent.
  • Контроль за трансформацией объектов.
  • Расширения к кэширующей системе.
2007 - 2017 © Русские переводы RFC, IETF, ISOC.