Когда вы устанавливаете cache-control: max-age=...
, вы говорите запрашивающей стороне, что можно безопасно кэшировать ресурс в течение такого длительного времени.
Но каждый браузер (или приложение в целом) должен решать, когда на самом деле кэшировать. Мобильные браузеры могут кэшировать только небольшие ресурсы, а браузеры настольных компьютеров могут делать наоборот.
Учитывая ваш пример в Firefox Developer Edition 80.0b5 после некоторых перезагрузок страница начала кешировать, изменив параметр cache-control на if-modified-since
. Это означает, что в браузере есть кэшированный ресурс, но он будет запрашивать у сервера ресурс, просто чтобы проверить, обновлен ли он. Если это так, сервер (или какой-либо промежуточный сетевой маршрутизатор) просто вернет ответ 304 без фактического содержимого, что в точности соответствует тому, что вы показали:
Но когда я нажимаю ввод в строке URL или когда я использую кнопки навигации, кеш используется без какого-либо фактического запроса:
Важно добавить, что элемент управления кешем - это подсказка, но не фактическому инициатору запроса: посредники также будут использовать эту информацию для кэширования ответов и ускорения загрузки следующих запросов. И даже если основной ресурс (html-страница) кэшируется, все ресурсы, связанные со страницей, имеют свой собственный тег cache-control
.
Перенесенный столбец в dev-tools, кажется, лучше показывает, был ли ресурс эффективно кэширован локально или нет:
person
Daniel Mitre
schedule
08.08.2020