В чем разница между «обычной перезагрузкой», «полной перезагрузкой» и «пустым кешем и полной перезагрузкой» в Chrome?

343

Недавно я обнаружил эту новую функцию в Chrome:

перезагрузить варианты

Я могу выяснить разницу между вариантом 1 и вариантом 3, и этот вариант 2, вероятно, что-то среднее, но я не могу найти более точную информацию нигде.

Кто-нибудь знает точное поведение каждого из 3 вариантов?

Сэмюэл Россиль
источник
17
Не могли бы вы объяснить «эту функцию»? В частности: как вы получаете к нему доступ? Я перепробовал все виды щелчков правой кнопкой мыши, управляющих нажатий, но не смог их получить. Какая это версия?
Иоахим Зауэр
83
@JoachimSauer Ха-ха, это мой маленький секрет ... Серьезно, он очень хорошо спрятан: нужно нажать кнопку обновления, не отпуская ее сразу, пока активна консоль разработчика. Samuelrossille.com/home/blog-chrome-reload-options.html
Samuel Россиль
11
Также появляется при щелчке правой кнопкой мыши по значку перезагрузки (когда открыт Devtools)
Costa
7
Это работает для OSX Chrome? Я не могу открыть его с помощью Dev Tools и щелкнуть правой кнопкой мыши / щелкнуть мышью + удерживать
nitsujri
6
Я только что нашел эти функции в 2016 году случайно ...
Эдвин Ип

Ответы:

439

Нормальная перезагрузка

То же самое, что нажатие F5. При этом будет использоваться кэш, но при проверке страницы все проверяется заново, ища ответы «304 Not Modified». Если браузер может избежать повторной загрузки кэшированных файлов JavaScript, изображений, текстовых файлов и т. Д., То это произойдет.


Жесткая перезагрузка

Не используйте ничего в кеше при выполнении запроса. (что равно SHIFT+ F5Нет необходимости открывать консоль разработчика) Принудительно перезагружать браузер каждый файл JavaScript, изображение, текстовый файл и т. д.


Пустой кеш и хард перезагрузка

Очевидно, что если кэш-память пуста, то придется выполнить полную перезагрузку. Это снова заставит браузер перезагружать все. Однако, если страница делает какие-либо постфактумные загрузки через JavaScript, которые не были частью загрузки страницы, тогда они все равно могли бы использовать кеш, где очищение кеша помогает, потому что оно гарантирует, что даже они не будут использовать кэшированные файлы.


Примечание . Эта функция доступна только при открытых инструментах разработчика.

Андрей Расмуссен
источник
49
Кто-нибудь знает, если третий вариант просто очищает кеш для текущего сайта, против очистки всего кеша?
Гринн
10
@Grinn: На самом деле, теперь, когда я думаю об этом, это, вероятно, весь кэш. Смысл этой функции заключается в том, чтобы очистить постфактум загрузки, которые не ограничиваются одним «сайтом».
Эндрю Расмуссен
13
Мне неясно, что считать "after-the-fact download via Javascript"? Может кто-нибудь привести конкретный пример?
Коста
4
@Costa Вы можете скачать материал, который изначально не указан в DOM. Например, добавив новый тег <script> в вашу DOM, или используя RequireJS и т. Д. Любая библиотека на базе AMD (например, RequireJS) в основном загружает свои сценарии лениво. В этом случае вы должны очистить кеш, чтобы убедиться, что на самом деле все подвергается жесткой перезагрузке.
Доми
16
Следует отметить, что это работает только в том случае, если инструменты разработчика открыты (F12). Было бы хорошо, если бы этот параметр всегда был доступен независимо от того, открыты ли инструменты разработчика или нет.
scunliffe
4

Это также работает в Mac OS X. Откройте инструменты разработчика, а затем, на кнопке перезагрузки, либо 1. вторичный щелчок (щелчок правой кнопкой мыши правой кнопкой мыши), либо 2. длительный щелчок, так же длительное нажатие, чтобы открыть меню.

В дополнение к этому ответу принудительная перезагрузка часто приводит к обновлению прокси, сетей доставки контента и других удаленных кешей.

введите описание изображения здесь

dcorking
источник
«Жесткая перезагрузка часто приводит к обновлению прокси, сетей доставки контента и других удаленных кешей». → Можете ли вы поддержать это? Есть ли у вас цитата, объясняющая, почему это так? Я ожидаю, что Hard Reload просто перезагрузит весь локальный кеш и не окажет дополнительного влияния на удаленные серверы.
Денилсон Са Майя
Я думаю, что браузеры отправляют Cache-Control: no-cacheзаголовок. squid-web-proxy-cache.1019090.n4.nabble.com/… Ваш?
18:00
1
Я сделал некоторые испытания ... Переход к URL или с помощью Normal Reload послал 3 заголовки кэша , связанные с : Cache-Control: max-age=0, If-Modified-Since, If-None-Match. Однако при выполнении Hard Reload (с очисткой или без очистки кэша) были отправлены только 2 заголовка, связанных с кэшем: Cache-Control: no-cacheи Pragma: no-cache. Так что, да, браузер действительно отправляет заголовок, запрашивая у серверов свежую версию; Затем это зависит от серверов (включая прокси), чтобы изменить поведение на основе этого.
Денилсон Са Майя,
Большой! Вы можете отредактировать это в моем ответе или написать свой собственный ответ. @ DenilsonSáMaia
dcorking
0

Следующий метод позволяет очистить кеш только для проблемных URL. Это помогло мне, когда я застрял с http в кеш перенаправления https.

  1. Откройте инструменты разработчика Chrome, в Windows я использую F12
  2. Проверьте, Preserve logчтобы сохранить журнал перед перенаправлением
  3. Щелкните правой кнопкой мыши перенаправленный URL и Clear browser cache

Это очистит только проблемный кеш, не влияя на нормальный кеш.

Сохейл Ахмед
источник