Кешируемые методы

Кешируемые ответы - это HTTP-ответы, которые могут быть закешированы, то есть сохранены для дальнейшего восстановления и использования позже, тем самым снижая число запросов к серверу. Не все HTTP-ответы могут быть закешированы. Вот несколько ограничений:

  • Метод, используемый в запросе, кешируемый, если это GET или HEAD. Ответ для POST или PATCH запросов может также быть закеширован, если указан признак "свежести" данных и установлен заголовок Content-Location, но это редко реализуется. (Например, Firefox не поддерживает это согласно https://bugzilla.mozilla.org/show_bug.cgi?id=109553.) Другие методы, такие как PUT и DELETE не кешируемые, и результат их выполнения не кешируется.
  • Коды ответа, известные системе кеширования, которые рассматриваются как кешируемые: 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501.
  • Отсутствуют специальные заголовки в ответе, которые предотвращают кеширование: например, Cache-Control.

Обратите внимание, что некоторые некешируемые запросы-ответы к определённым URI могут сделать недействительным (инвалидируют) предыдущие закешированные ответы на тех же URI. Например, PUT к странице pageX.html инвалидируют все закешированные ответы GET или HEAD запросов к этой странице.

Когда и метод запроса и статус ответа кешированы, то ответ к запросу тоже может быть закеширован:

GET /pageX.html HTTP/1.1
(…)

200 OK
(…)

Запрос PUT не может быть закеширован. Более того, он инвалидирует закешированные данные запросов к тому же URI, сделанных через HEAD или GET:

PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)

Специальный заголовок Cache-Control в ответе может предотвратить кеширование:

GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)

Материалы для изучения

Основные

Технические

  • Описание общих кешируемых методов: GET, HEAD
  • Описание общих некешируемых методов: PUT, DELETE, often POST