Я полагаю, что все здесь использовали функцию отключения кеша инструмента отладки браузера. Когда эта функция включена, кеш браузера js, css, изображений и т. д. текущего веб-сайта будет аннулирован, и все запросы будут повторно отправлены на сервер.ctrl
+F5
Такого же эффекта можно добиться.
Давайте поговорим о том, что делает браузер, когда эта функция включена.
что делает браузер
Прежде всего, позвольте мне объяснить, что открытие браузера disbale cache не будет активно удалять эти локальные кеши, а также не предотвратит локальное кэширование запрошенных ресурсов. Как я пришел к такому выводу?
Не удаляет локальный кеш
Левая сторона рисунка ниже — это случай, когда кеш disbale проверяется, а правая сторона — случай, когда кеш disbale не проверяется.
Когда я устанавливаю флажок Отключить кеш для перезагрузки страницы, а затем снимаю флажок Отключить кеш для перезагрузки страницы, я обнаружу, что браузер немедленно использует кеш, что подтверждает мой вывод выше:Кэш есть всегда, просто зависит от того, хочет браузер его использовать или нет.
Манипулировать заголовками запросов
Как браузеры могут быть такими своевольными? Причина в том, что он может манипулировать заголовками HTTP-запросов.
Откройте кеш отключения и найдите любой запрос
Есть больше заголовков HTTP-запросаcache-control
,pragma
эти две вещи.
cache-control
cache-control
Все должны быть знакомы с этой вещью, в конце концов, этоhttp1.1из"Кэш Самбо"Один. Это продукт http1.1, что означает, что полезно только поле http1.1 и выше, поэтому мы видели выше, что браузер поместилprgama
, эта функция на самом деле такая же, какcache-control
То же самое, но браузер совместим сhttp1.0
, поэтому ниже я просто говорюcache-control
.
no-cache
cache-control
установлено значениеno-cache
,Здесь есть распространенное недоразумение,и многие люди поймут это буквальное значение как не кеширование.На самом деле такое понимание неправильное и неправильное.
no-cache
Правильное понимание должно бытьНе делайте сильное кэширование,ноСогласовать кешЭто все равно необходимо, запрос браузера будет отправлен на сервер, а затем сервер проверит, не истек ли срок действия ресурса.Если он не истек, код состояния http (код состояния)304,В это время браузер будет использовать локальный кеш, если срок его действия истечет, он будет200, тогда браузер будет использовать контент, отправленный сервером.
Разница между настройкой заголовка запроса и заголовка ответа
cache-control
Вы можете установить небольшую разницу в значении заголовков запроса и заголовков ответа (заголовки ответа), и использование будет одинаковым, но представители.
кcache-control: no-cache
Например
- Установить в заголовке запроса: сообщает браузеруэтот разHTTP-запрос не разрешено использоватьСильный кеш, а это значит, что в этот раз запрос должен быть отправлен на сервер за меня.
- Установить в заголовке ответа: сообщает браузеруэтот разВы можете сначала кэшировать содержимое http-ответа, нов следующий разКогда есть тот же запрос, вам все равно нужно отправить запрос на сервер.
Сказав это, каждый должен понимать, что, черт возьми, делает браузер при отключении кеша.
Давайте распространять ум
Что это будет?
Если нет заголовка запроса и заголовка ответаcache-control
, что будет делать браузер? Будет ли он по-прежнему кэшироваться? Как долго кэшировать?
Практикуйте истинное знание, найдите запрос, отвечающий вышеперечисленным условиям, и посмотрите, см. рисунок ниже.
Вывод состоит в том, что браузер будет кешировать, и это все еще сильный кеш, который попадает прямо изdisk
илиmemory
читать в.
Что касается того, как долго его можно кэшировать, результаты Baidu следующие:
(время доступа - время последней модификации файла) ÷ 10
Это также объясняет, почему один и тот же запрос иногда попадаетСильный кеш(с диска или из памяти), иногда304.
Как это будет настроено?
Если заданы заголовки запроса и ответаcache-control
, и их значения тоже разные, что будет делать браузер?
Несложно немного разобраться в этой проблеме, подчеркнуть ключевые моменты, ключевые моменты, ключевые моменты...
cache-control
Установить в заголовке запроса, что влияет на этот запрос;cache-control
Устанавливается в заголовке ответа, влияет на следующий запрос
Вы пробуете, вы пробуете...
Эпилог
Если у вас есть какие-либо вопросы о механизме кэширования браузера или протоколе http, пожалуйста, оставьте сообщение в области комментариев, чтобы обсудить