Кешируемые методы
Кешируемые ответы - это 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 (…)
Материалы для изучения
Основные
- Определение кешируемых методов в спецификации HTTP.