введение
Ранее я уже обращался к содержанию http-кеширования, а что касается принудительного кэширования и кэширования с согласованием, то разница между ними может быть понятна каждому.
следует ли и какой кеш использовать при нормальных обстоятельствах,
Есть много полных статей по теме, поэтому я не буду повторять их здесь.
Однако различное поведение пользователей нарушит первоначальные нормы.
В этой статье мы рассмотрим производительность кеша браузера при различном поведении. То есть какой контент обновляется по f5?
кеш браузера
Когда дело доходит до кэширования браузера, на ум приходят несколько ключевых слов:
Cache-Control, Expires, ETag, If-Match, If-None-Match, Last-Modified и т. д.
По роли разных идентификаторов, при повторном доступе к ресурсу,
Когда требуется кэширование, в основном существуют следующие два метода кэширования.
Сильный кеш
Как только ресурс попадает в сильный кеш, браузер не будет отправлять запрос на сервер, а будет напрямую читать кеш.
Феномен под Chrome 200 ОК (из кеша диска) или 200 ОК (из кеша памяти).
Согласовать кеш
Это наш общий код состояния 304.
После истечения срока действия кеша продолжайте запрашивать ресурс,
Для современных браузеров есть два подхода:
- В соответствии с ETag_value в последнем ответе поле If-None-Match автоматически добавляется в заголовок запроса.
После получения запроса сервер сравнивает значение поля If-None-Match со значением ETag ресурса, Если они совпадают, происходит попадание в кэш согласования и возвращается ответ 304. - В соответствии с Last-Modified_value в последнем ответе в заголовок запроса автоматически добавляется поле If-Modified-Since, после получения запроса сервер сравнивает значение поля If-Modified-Since со значением Last-Modified ресурса, если то же самое, то происходит попадание в кеш согласования и возвращается ответ 304.
ETag — это новый логотип http/1.1, а также он призван решить некоторые проблемы Last-Modified.
Например, время сервера и клиента не синхронизировано и т.д.
Таким образом, он имеет более высокий приоритет, чем Last-Modified.
Поэтому в общих случаях кеш ресурсов находится в указанном выше порядке: сильный кеш => кеш согласования => повторное получение.
Однако стратегия кэширования связана с операцией пользователя, обычно неизбежно освежиться.
Освежиться можно разными способами. Кнопка «Обновить», Command + R, SHIFT + COMMAND + R и т. д. В чем разница между ними? кxxdy.tech/Давайте рассмотрим это в качестве примера.
Посетите снова (адресная строка Enter)
Вы можете видеть, что ресурсы разделены на следующие категории: Сначала рассмотрим интуитивный запрос.Большинство из них топ 200 кэшей, только рукопись 304
- Некэшированные ресурсы с maxage=0
Такие ресурсы всегда перезагружаются с сервера при запросе
- Статус 200, но сзади есть логотип, указывающий на кэш памяти или кэш диска. Шрифт этого кеша серый, и проще увидеть отличие от 200 выше.
Ответ ресурса css из кеша жесткого диска.
js ответ, то есть кеш из памяти
Вот сильный кеш, читаемый непосредственно из локального кеша.
Поскольку Cache-Control:max-age=600 не истекает при обновлении, он будет получен из локального кеша.
Причина двух скриншотов здесь заключается в том, что места хранения кеша у них разные. Дайте обзор (пожалуйста, ищите подробности)
-
Кэш памяти (из кеша памяти): кеш памяти имеет две характеристики, а именно быстрое чтение и своевременность. Быстрое чтение: Кэш памяти будет хранить скомпилированный и проанализированный файл непосредственно в памяти процесса, занимая определенный ресурс памяти процесса, чтобы облегчить быстрое чтение при следующем запуске.
Своевременность: после закрытия процесса память процесса будет очищена. -
Кэш жесткого диска (из кеша диска): Кэш жесткого диска напрямую записывает кеш в файл жесткого диска.Чтение кеша требует операций ввода-вывода с файлами жесткого диска, хранящимися в кеше, а затем повторно анализирует содержимое кеша, который сложен для чтения и быстр. Медленнее, чем memcache.
В браузере, в большинстве случаев, браузер будет напрямую хранить в кеше памяти после разбора и выполнения таких файлов, как js и изображения.
Затем при обновлении страницы просто читайте прямо из кеша памяти (из кеша памяти);
Файл css будет храниться в файле на жестком диске, поэтому каждый раз при рендеринге страницы необходимо считывать кеш с жесткого диска (из кеша диска)
- Согласовать кеш
Статус 304, что означает, что файл не изменился после сравнения с сервером, и возвращен исходный ресурс кэша.
В заголовке запроса этого ресурса есть Cache-Control: max-age=0,
Поэтому каждый раз, когда я делаю запрос, я возвращаюсь к серверу, чтобы спросить, и кеш не будет усилен, потому что сервер не обновлялся, а etag тот же, поэтому кэшированные ресурсы возвращаются.
Суммировать
Если вы нажмете Enter в адресной строке, мы получим к нему доступ в обычном режиме и будем следовать политике кэширования браузера.
f5 обновить (mac это команда + r)
При перепрошивке f5 будет ли разница?Давайте сначала сравним интуитивно.
Вроде разницы нет, и файл тоже в том же состоянии, что и прямой возврат каретки.
Суммировать
Так что же такое рефреш f5,
Видно, что f5 можно назвать мягким обновлением, то есть просто перезагрузкой страницы.
То есть так же, как и адрес возврата каретки, кэш по обычным правилам все равно будет задействован.
Принудительное обновление (command+shift+r)
На этом этапе вы можете посмотреть результаты запроса: все перечисленные выше элементы 304 и кэша из кэша перезагружаются.
Подробности можно посмотреть в соответствующем запросе,
В запросе есть еще один атрибут:
У всех есть флаг Cache-Control: no-cache.
Это указывает на то, что сервер должен каждый раз оценивать, является ли он действительным, и его не следует понимать как неиспользующий кеш напрямую.
Кроме того, можно заметить, что в запросе нет атрибута If-None-Match, который может соответствовать ETag в ответе,
Так что перезагружу.
В итоге
Обновление в это время можно назвать жестким обновлением,
Запрос добавит флаг Cache-Control: no-cache, чтобы указать, что лимит управления кэшем превышен.
Серверу нужно переоценивать валидность, то есть не усиливать кеш.
Кроме того, if-None-Match удаляется из заголовка запроса, чтобы нельзя было использовать согласованный кеш. Вытащить на новый ресурс
tip
Здесь происходит жесткая перезагрузка, и некоторые файлы до сих пор кэшируются, я вижу здесь какие-то маленькие картинки и не могу найти разумного объяснения. Конкретно мне нужно его изучить, а потом добавить
Отключить кеш и обновить
Для файлов, упомянутых выше, вам нужно очистить кеш и сильно перезагрузить его.
После завершения операции кэш вообще не используется.
правило
Эффекты, соответствующие нескольким упомянутым выше методам обновления, могут по-разному реализовываться в разных браузерах. Если вы найдете относительно совершенный, вы можете обратиться к нему.
заключительные замечания
На этом личное отключение обновления и кеша закончилось, и я надеюсь, что это может помочь нуждающимся, и я надеюсь, что великий бог может дать какой-нибудь совет.Для большего количества личных блогов, пожалуйста, переместите
Также спасибо следующим справочным статьям:
stackoverflow.com/questions/8…
stackoverflow.com/questions/3…