Cache-Control: no-cache не запрещает кеширование, а требует ревалидации
Ключевые факты
- 1 Директива no-cache позволяет браузеру сохранять ресурс в кеше.
- 2 no-cache обязывает браузер ревалидировать ресурс с сервером при каждом запросе.
- 3 Для полного запрета кеширования и хранения данных используется директива no-store.
- 4 Неправильное использование no-cache увеличивает нагрузку на сервер и задержку из-за постоянных запросов на ревалидацию.
Многие разработчики применяют директиву `no-cache` с целью гарантировать, что пользователи всегда получают самую свежую версию ресурса. Однако это приводит к неоптимальному поведению: браузер сохраняет ресурс в кеше, но при каждом обращении к нему отправляет запрос на сервер (условный GET-запрос с заголовками `If-None-Match` или `If-Modified-Since`). Если ресурс не изменился, сервер отвечает кодом 304 (Not Modified), экономя трафик, но не устраняя задержку, связанную с сетевым запросом. Для полного запрета кеширования и хранения данных в локальном хранилище следует использовать директиву `Cache-Control: no-store`.