Лаборатория поисковой оптимизации

Поле Cache-Control


 <  Авторизация  Содержание  Что допускает кэширование?  > 

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

Заметьте, что кэши HTTP/1.0 могут не реализовывать управление (Cache-Control), а могут использовать только директиву Pragma: no-cache (см. раздел 13.32).

Директивы кэша должны пропускаться через приложения прокси или внешнего шлюза (gateway), вне зависимости от их значения для этого приложения, так как директивы могут быть применимы для всех получателей в цепочке запрос/отклик. Невозможно специфицировать директивы для отдельных кэшей.

Cache-Control

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

cache-directive

= cache-request-directive

| cache-response-directive

cache-request-directive

= "no-cash" ["=" <">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"

| "max-age" "=" delta-seconds

| cache-extension;

cache-extension

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

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

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

  • Ограничения на то, что можно кэшировать. Они налагаются только исходным сервером.
  • Ограничения на то, что можно записывать в память кэша. Они определяются исходным сервером или агентом пользователя.
  • Модификации базового механизма контроля годности записей. Они вносятся либо исходным сервером, либо агентом пользователя.
  • Управление процессом перепроверки годности записей и перезагрузкой осуществляется только агентом пользователя.
  • Управление преобразованием объектов.
  • Расширения системы кэширования.


RFC 2068