Кешируемые методы
Кешируемые ответы - это HTTP-ответы, которые могут быть закешированы, то есть сохранены для дальнейшего восстановления и использования позже, тем самым снижая число запросов к серверу. Не все HTTP-ответы могут быть закешированы. Вот несколько ограничений:
- Метод, используемый в запросе, кешируемый, если это
GETилиHEAD. Ответ дляPOSTилиPATCHзапросов может также быть закеширован, если указан признак "свежести" данных и установлен заголовокContent-Location(en-US), но это редко реализуется. (Например, 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.