Управление кэшем

Cache-Control передает инструкции по кэшированию в виде разделенных запятыми директив. max-age=60 означает, что ответ остается актуальным в течение минуты; no-store запрещает его хранение вообще; private разрешает хранение только собственному браузеру пользователя; public разрешает использование общих кэшей; no-cache разрешает хранение, но требует повторной проверки перед каждым повторным использованием.

Как это работает

Кэш отправляет актуальный ответ без обращения к серверу. После того, как ответ устареет, кэш повторно проверяется с помощью условного запроса — If-None-Match с сохраненным ETag — и сервер отвечает 304 Not Modified, если ничего не изменилось, сохраняя тело ответа. s-maxage устанавливает отдельное время жизни для общих кэшей, таких как CDN.

Заблуждение

Директива no-cache означает "do not cache" . Она также означает "check with me before using a cached copy" ; директива, запрещающая хранение, — no-store. Смешивание этих двух директив либо приводит к утечке конфиденциальных данных в общие кэши, либо к потере безопасного кэширования.

Попробуйте здесь.

Запросы GET /football/v1/standings и GET /bank/v1/exchange-rates отправляют Cache-Control с ETag; повторите запрос, установив If-None-Match равным этому ETag, и в ответ получите ошибку 304 без тела запроса.

Источники

Другие термины

Читать страницу на английском

Все термины · Приёмы тестирования · Все 39 mock REST API

Последнее обновление