Многие пользователи в курсе, что у браузера есть кэш, кто-то даже регулярно его очищает, но не все в курсе, что же это за возможность и как она работает.
Учебное пособие по кэшированию, часть 1
Довольно подробное и интересное изложение материала, касающегося кэша и его использования. Часть 2.
Автор, Mark Nottingham, — признанный эксперт в области HTTP-протокола и веб-кэширования. Является председателем IETF HTTPbis Working Group. Принимал участие в редактировании HTTP/1.1, part. 6: Caching. В настоящий момент участвует в разработке HTTP/2.0.
От переводчика: об опечатках и неточностях просьба сообщать в личку. Спасибо.
Веб-кэш располагается между одним или несколькими веб-серверами и клиентом, или множеством клиентов, и следит за входящими запросами, сохраняя при этом копии ответов — HTML-страниц, изображений и файлов (совокупно известных, как представления (representations); прим. переводчика — позвольте я буду употреблять слово “контент” — оно, на мой взгляд, не так режет слух), для собственных нужд. Затем, если поступает другой запрос с аналогичным url-адресом, кэш может использовать сохраненный прежде ответ, вместо повторного запроса к серверу.
Кэш браузера. Польза и вред.
Существует две основные причины, по которым используется веб-кэш:
1. Уменьшение времени ожидания — так как данные по запросу берутся из кэша (который располагается “ближе” к клиенту), требуется меньше времени для получения и отображения контента на стороне клиента. Это делает Веб более отзывчивым (прим. переводчика — “отзывчивым” в контексте быстроты реакции на запрос, а не эмоционально).
2. Снижение сетевого трафика — повторное использование контента снижает объем данных, передаваемых клиенту. Это, в свою очередь, экономит деньги, если клиент платит за трафик, и сохраняет низкими и более гибкими требования к пропускной способности канала.
Виды веб-кэшей
Кэш браузера (Browser cache)
Если вы изучите окно настроек любого современного веб-браузера (например, Internet Explorer, Safari или Mozilla), вы, вероятно, заметите параметр настройки «Кэш». Эта опция позволяет выделить область жесткого диска на вашем компьютере для хранения просмотренного ранее контента. Кэш браузера работает согласно довольно простым правилам. Он просто проверяет являются ли данные “свежими”, обычно один раз за сессию (то есть, один раз в текущем сеансе браузера).
Этот кэш особенно полезен, когда пользователь нажимает кнопку “Назад” или кликает на ссылку, чтобы увидеть страницу, которую только что просматривал. Также, если вы используете одни и те же изображения навигации на вашем сайте, они будут выбираться из браузерного кэша почти мгновенно.
Прокси-кэш (Proxy cache)
Прокси-кэш работает по аналогичному принципу, но в гораздо большем масштабе. Прокси обслуживают сотни или тысячи пользователей; большие корпорации и интернет-провайдеры часто настраивают их на своих файрволах или используют как отдельные устройства (intermediaries).
Поскольку прокси не являются частью клиента или исходного сервера, но при этом обращены в сеть, запросы должны быть к ним как-то переадресованы. Одним из способов является использование настроек браузера для того, чтобы вручную указать ему к какому прокси обращаться; другой способ — использование перехвата (interception proxy). В этом случае прокси обрабатывают веб-запросы, перенаправленные к ним сетью, так, что клиенту нет нужды настраивать их или даже знать об их существовании.
Прокси-кэши являются своего рода общей кэш-памятью (shared cache): вместо обслуживания одного человека, они работают с большим числом пользователей и поэтому очень хороши в сокращении времени ожидания и сетевого трафика. В основном, из-за того, что популярный контент запрашивается много раз.
Кэш-шлюз (Gateway Cache)
Также известные как “реверсивные прокси-кэши” (reverse proxy cache) или “суррогаты” (surrogate cache) шлюзы тоже являются посредниками, но вместо того, чтобы использоваться системными администраторами для сохранения пропускной способности канала, они (шлюзы) обычно используются веб-мастерами для того, чтобы сделать их сайты более масштабируемыми, надежными и эффективными.
Запросы могут быть перенаправлены на шлюзы рядом методов, но обычно используется балансировщик нагрузки в той или иной форме.
Сети доставки контента (content delivery networks, CDN) распространяют шлюзы по всему интернету (или некоторой его части) и отдают кэшированный контент заинтересованным веб-сайтам. Speedera и Akamai являются примерами CDN.
Это учебное пособие преимущественно сфокусировано на браузерных кэшах и прокси, но некоторая информация подходит также и тем, кому интересны шлюзы.
Почему я должен им пользоваться
Кэширование является одной из наиболее неправильно понятых технологий в интернете. Веб-мастера, в частности, боятся потерять контроль над их сайтом, потому что прокси могут “скрыть” их пользователей, сделав сложным наблюдение посещаемости.
К несчастью для них (веб-мастеров), даже если бы веб-кэша не существовало, есть слишком много переменных в интернете, чтобы гарантировать, что владельцы сайтов будут в состоянии получить точную картину того, как пользователи обращаются с сайтом. Если это является для вас большой проблемой, данное руководство научит вас как получить необходимую статистику, не делая ваш сайт “кэшененавистником”.
Другой проблемой является то, что кэш может хранить содержимое, которое устарело или просрочено.
С другой стороны, если вы ответственно подходите к проектированию вашего веб-сайта, кэш может помочь с более быстрой загрузкой и сохранением нагрузки на сервер и интернет-соединение в рамках допустимого. Разница может быть впечатляющей: загрузка сайта, не работающего с кэшем, может потребовать нескольких секунд; в то время как преимущества использования кэширования могут сделать её кажущейся мгновенной. Пользователи по достоинству оценят малое время загрузки сайта и, возможно, будут посещать его чаще.
Подумайте об этом в таком ключе: многие крупные интернет-компании тратят миллионы долларов на настройку ферм серверов по всему миру для репликации контента для того, чтобы ускорить, как только можно, доступ к данным для своих пользователей. Кэш делает то же самое для вас и он гораздо ближе к конечному пользователю.
CDN, с этой точки зрения, являются интересной разработкой, потому что, в отличие от многих прокси-кэшей, их шлюзы приведены в соответствие с интересами кэшируемого веб-сайта. Тем не менее, даже тогда, когда вы используете CDN, вы все равно должны учитывать, что там будет прокси и последующее кэширование в браузере.
Резюмируя, прокси и кэш браузера будут использоваться, нравится вам это или нет. Помните, если вы не настроите ваш сайт для корректного кэширования, он будет использовать настройки кэша по-умолчанию.
Как работает веб-кэш
Все виды кэшей обладают определенным набором правил, которые они используют, чтобы определить, когда брать контент из кэша, если он доступен. Некоторые из эти правил установлены протоколами (HTTP 1.0/HTTP 1.1), некоторые — администраторами кэша (пользователями браузера или администраторами прокси).
Вообще говоря, это самые общие правила (не волнуйтесь, если вы не понимаете детали, они будут объяснены ниже):
- Если заголовки ответа сообщают кэшу не сохранять их, он не сохранит.
- Если запрос авторизованный (authorized) или безопасный (то есть, HTTPS), он не будет закэширован.
- Кэшированный контент считается “свежим” (то есть, может быть отправлен клиенту без проверки с исходного сервера), если:
- У него установлено время истечения или другой заголовок, контролирующий время жизни, и он еще не истек.
- Если кэш недавно проверял контент и тот был модифицирован достаточно давно.
Свежий контент берется непосредственно из кэша, без проверки с сервера.
- Если контент является устаревшим, исходному серверу будет предложено провалидировать его или сообщить кэшу, является ли имеющаяся копия по-прежнему актуальной.
- При определенных обстоятельствах — например, когда он отключен от сети — кэш может сохранять устаревшие ответы без проверки с исходного сервера.
Свежесть (freshness) и валидация (validation) являются наиболее важными способами, с помощью которых кэш работает с контентом. Свежий контент будет доступен мгновенно из кэша; валидное же содержимое избежит повторной отправки всех пакетов, если оно не было изменено.
Что такое кэш браузера. Кэш (Cache) — это специально отведенное место (хранилище) в памяти жесткого диска для хранения копий данных с посещенных страниц сайтов, например таких как: картинки, текст, файлы и т.д. Кэш позволяет сайтам загружаться намного быстрее и уменьшает размер расходуемого интернет-трафика. Работает это так: когда вы посещаете какой-либо сайт в интернете, браузер сохраняет в определенное место на компьютере данные с его посещенных страниц. Каждый веб- браузер имеет функцию кэширования, файлы которого, как правило хранятся в определенной папке на компьютере. Они, обычно не занимают много места на компьютере и автоматически очищаются сами.
Что такое кэш в браузере
Часто в советах по оптимизации браузера и решении каких-либо неполадок, связанных с его работой, пользователи натыкаются на рекомендацию очистить кэш (cache). Несмотря на то, что это легкая и обыденная процедура, многих все равно интересует, что же такое кэш и зачем нужно его очищать.
Что такое кэш в браузере
На самом деле, кэш бывает не только у браузеров, но и некоторых других программ, и даже устройств (к примеру, у жесткого диска, видеокарты), но там он работает немного по-другому и к сегодняшней теме не относится. Когда мы выходим в интернет через браузер, переходим по разным ссылкам и сайтам, просматриваем контент, такие действия вынуждают кэш без конца увеличиваться. С одной стороны это ускоряет повторный доступ к страницам, а с другой — иногда влечет за собой разные сбои. Итак, обо всем по порядку.
Что представляет собой кэш
После установки на компьютер веб-обозреватель создает специальную папку, куда и помещается кэш. Туда попадают файлы, которые сайты посылают нам на жесткий диск в момент, когда мы на них заходим в первый раз. Этими файлами могут быть разные составляющие страниц интернета: аудио, картинки, анимационные вставки, текст — все то, чем наполнены сайты в принципе.
Предназначение кэша
Сохранение элементов сайтов нужно ради того, чтобы когда вы повторно заходили на посещенный ранее сайт, загрузка его страниц была быстрее. Если браузер обнаруживает, что кусочек сайта уже сохранен в виде кэша у вас на компьютере и он совпадает с тем, что есть на сайте в данный момент, для просмотра страницы будет задействован сохраненный вариант. Несмотря на то, что по описанию такой процесс кажется более долгим, чем загрузка страницы целиком «с нуля», по факту использование элементов из кэша положительно сказывается на скорости отображения сайта. А вот если кэшированные данные устарели, происходит повторная загрузка уже обновленной версии этого же кусочка веб-сайта.
Картинка выше поясняет, как работает кэш в браузерах. Подведем краткий итог, зачем же нужен кэш в браузере:
- Быстрее повторно загружает сайты;
- Экономит трафик интернета и делает менее заметным нестабильное, слабое интернет-соединение.
Некоторые более продвинутые пользователи при необходимости могут воспользоваться кэшированными файлами, чтобы достать из них какую-то очень важную информацию. Для всех остальных юзеров есть другая полезная функция — возможность скачать к себе на компьютер страницу сайта или сайт целиком для дальнейшего просмотра офлайн (без наличия интернета).
Где хранится кэш на компьютере
Как уже было сказано ранее, каждый браузер имеет собственную отдельную папку для хранения кэша и других временных данных. Часто путь к ней можно посмотреть прямо в его настройках. Подробнее об этом написано в статье об очистке кэша, ссылка на которую расположена парой абзацев ниже.
У нее нет никаких ограничений на размеры, поэтому в теории она может увеличиваться до тех пор, пока на жестком диске не кончится место. По факту же после того, как в этой папке скопится несколько гигабайт данных, скорее всего, работа веб-обозревателя замедлится или появятся ошибки с отображением некоторых страниц. Например, на часто посещаемых сайтах вы начнете видеть старые данные вместо новых или возникнут проблемы с использованием тех или иных его функций.
Тут стоит заметить, что кэшируемые данные сжаты, и поэтому условные 500 МБ постранства на жестком диске, которое будет занимать кэш, содержат фрагменты сотен сайтов.
Очищать кэш постоянно не имеет смысла — он специально сделан для того, чтобы накапливаться. Делать это рекомендуется лишь в трех ситуациях:
- Его папка начинает слишком много весить (это отображается прямо в настройках браузера);
- Браузер периодически загружает сайты некорректно;
- Вы только что очистили компьютер от вируса, который, скорее всего, попал в операционную систему из интернета.
Ранее мы уже рассказывали, как очищать кэш популярных браузеров разными способами в статье по следующей ссылке:
Уверенные в своих умениях и знаниях пользователи иногда перемещают кэш браузера в оперативную память. Это удобно, поскольку скорость чтения у нее быстрее, чем у жесткого диска, и позволяет быстро подгружать нужные результаты. Кроме того, такая практика позволяет продлить срок службы SSD-накопителя, имеющего определенный ресурс на количество циклов перезаписи информации. Но эта тема достойна отдельной статьи, которую мы рассмотрим в следующий раз.
Удаление кэша одной страницы
Теперь, когда вы знаете, что очищать кэш часто не надо, мы расскажем, как делать это в рамках одной страницы. Этот вариант пригодится, когда вы наблюдаете проблему с работой конкретной странички, но другие сайты при этом функционируют исправно.
Если у вас возникли неполадки с актуализацией страницы (вместо того чтобы скачать новую версию страницы браузер отображает устаревую, взятую из кэша), одновременно нажмите сочетание клавиш Ctrl + F5. Страница при этом перезагрузится, а весь кэш, относящийся к ней, будет удален с компьютера. Вместе с этим веб-обозреватель загрузит с сервера новую версию кэша. Наиболее яркие (но не единственные) примеры сбойного поведения — играет не та музыка, которую вы включаете, картинка отображается в плохом качестве.
Вся информация актуальна не только для компьютеров, но и для мобильных устройств, особенно смартфонов — в связи с этим удалять кэш там рекомендуется еще реже, если вы экономите трафик. В заключение заметим, что при использовании режима Инкогнито (приватного окна) в браузере, данные этого сеанса, в том числе и кэш, не будут сохранены. Это полезно, если вы пользуетесь чужими ПК.
Мы рады, что смогли помочь Вам в решении проблемы.
Помимо этой статьи, на сайте еще 13016 полезных инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Что такое кеш? Кэш или кеш — это специальное место на жестком диске компьютера, куда сохраняются ранее посещенные страницы, изображения и любые другие данные с просмотренных интернет-страниц. На практике это выглядит так: вы просматриваете различные сайты в сети. Очистка кэша в Яндекс. Браузер: Откройте в меню браузера вкладку Настройки, расположенную в правом верхнем углу. Выберите пункт «История» и раздел «Очистить историю», который находится по правой стороне. MyOwnConference это более 200 уникальных функций, необходимых для планирования и успешного проведения вебинаров, онлайн лекций и видеоконференций.
Что такое кэш и зачем его чистить
Когда не работает какой-то сайт или сервис, от техподдержки часто можно услышать «Почистите кэш и перезагрузите страницу». Иногда это помогает. Рассказываем, почему так происходит, что такое кэш, зачем он нужен и как его почистить.
⚠️ Минутка грамотности. По словарю РАН слово cache в русском пишется «кеш». Но по рекомендациям Гиляревского нужно писать «кэш». И нам нравится, как это произносится. Произнесите вместе с нами:
Что такое кэш
Кэш — это данные, которые компьютер уже получил и использовал один раз, а потом сохранил на будущее. Смысл кэша в том, чтобы в следующий раз взять данные не с далёкого и медленного сервера, а из собственного быстрого кэша. То же самое, что закупиться продуктами на неделю и потом ходить не в магазин, а в холодильник.
В случае с браузером это работает так:
- Браузер сделал запрос на сервер.
- Сервер в ответ прислал страницу, скрипты и все картинки.
- ❤️ Браузер сохранил всё это в память ← это и есть кэш.
Дальше происходит так:
4. Если вкладкой или браузером долго не пользовались, операционная система выгружает из оперативной памяти все страницы, чтобы освободить место для других программ.
5. Если переключиться назад на браузер, он моментально сходит в кэш, возьмёт оттуда загруженную страницу и покажет её на экране.
Получается, что если браузер будет брать из кэша только постоянные данные и скачивать с сервера только что-то новое, то страница будет загружаться гораздо быстрее. Выходит, главная задача браузера — понять, какой «срок годности» у данных в кэше и через какое время их надо запрашивать заново.
👉 Например, браузер может догадаться, что большая картинка на странице вряд ли будем меняться каждые несколько секунд, поэтому имеет смысл подержать её в кэше и не загружать с сервера при каждом посещении. Поэтому в кэше часто хранятся картинки, видеоролики, звуки и другие декоративные элементы страницы.
👉 Для сравнения: браузер понимает, что ответ сервера на конкретный запрос пользователя кэшировать не надо — ведь ответы могут очень быстро меняться. Поэтому ответы от сервера браузер не кэширует.
Какая проблема с кэшем
На первый взгляд кажется, что кэш — это прекрасно: данные уже загружены, к ним можно быстро обратиться и достать оттуда всё, что нужно, без запроса к серверу на другом конце планеты.
Но представьте такую ситуацию: вы заходите в интернет-магазин обуви, в котором покупали уже много раз, но товары почему-то не добавляются в корзину. Или добавляются, но кнопка «Оплатить» не работает. Чаще всего причина в том, что браузер делает так:
- Вы вводите адрес интернет-магазина.
- Браузер смотрит в кэше, есть ли у него какие-то данные от этого сайта и что у них со сроком годности.
- В прошлый раз сервер не сказал браузеру, что у скриптов со сроком годности, поэтому браузер считает все скрипты свежими. А на самом деле для корзины сервер уже использует новый скрипт.
- Браузер берёт старый скрипт из кэша, подгружает с сайта фотки новых товаров и собирает страницу со старым скриптом.
- Вы нажимаете на кнопку, запускается старый скрипт.
- Сервер не отвечает, потому что рассчитывает уже на новый скрипт.
- Через 3 минуты терпение лопается, и вы уходите на Алиэкспресс за комплектом для кастомной клавиатуры.
Решение — почистить кэш
Когда мы чистим кэш, оттуда удаляются все данные, которые браузер сохранил «на всякий случай». Это значит, что при обновлении страницы браузер заглянет в кэш, увидит, что там пусто и запросит все данные с сервера заново. Они, конечно, тоже сразу отправятся в кэш, но в следующий раз вы уже будете знать, что делать.
Чтобы очистить кэш в Сафари, достаточно нажать ⌥+⌘+E, а в Хроме — нажать Ctrl+Shift+Backspace (⇧+⌘+Backspace) и выбрать время, в пределах которого нужно очистить кэш:
Зачем нужен кэш, если из-за него всё ломается?
На самом деле всё ломается не из-за кэша, а из-за неправильных настроек сервера, которые отдают страницу. Потому что именно сервер должен сказать браузеру: «Вот это можно кэшировать, а вон то лучше не кэшируй, мало ли что».
Часто разработчики недокручивают эти настройки, и браузер не получает нужных инструкций, поэтому кэширует всё подряд. И тогда приходится вмешиваться, чистить кэш и восстанавливать работоспособность.
Что такое кэш Когда вы открываете любые сайты, открытки, картинки, видео, их копии остаются в памяти браузера. Это происходит, даже если вы не скачиваете контент, а просто просматриваете. Как раз эти копии и называются кэшем. Он нужен для того, чтобы сократить количество запросов к сайтам. Например, через некоторое время вы вновь решите посмотреть страницу, которую открывали раньше. Кэш моментально загрузит ее с жесткого диска. Кэширование работает практически во всех программах и приложениях. Некоторые данные очищаются автоматически, а другие копятся на жестком диске. Это создает дополнительную нагрузку на память устройства. Замедляется работа смартфона, ноутбука, компьютера.
- https://habr.com/ru/post/203548/
- https://lumpics.ru/what-is-cache-in-browser/
- https://thecode.media/cache/