Что такое кеш и как оно работает?
Кеширование — это способ временно сохранить информацию из прошлых запросов пользователя, чтобы в будущем быстрее ее предоставить. Кеширование является стратегическим процессом, обеспечивающим высокую производительность программ. Однако кеширование должно быть разумным, так как оно обладает побочными эффектами.
Кешированные данные — информация, сохраненная локально в памяти устройства, которую пользователь чаще всего использует. Обычно это информация о разных приложениях, если мы говорим об устройстве. Но в каждом браузере организовано веб-кеширование. Это процесс сохранения информации внутри браузера о посещенных веб-сайтах. Благодаря этому процессу браузеру не нужно постоянно обращаться к серверу о часто посещаемом веб-ресурсе, что экономит время пользователя.
Однако размер кеша не безграничен. Кешированные данные занимают память, а это значит, что если не ставить ограничения на объем кеша и не проводить периодическую «чистку», тогда есть риск, что память переполнится. Переполнение памяти грозит аварийным завершением работы устройства или программы.
Кеширование — что это?
Кеширование — это технология сохранения копии информации в локальной памяти. Этот процесс часто связан с информацией, которую создавать повторно дорого или долго. Извлечение такой информации непосредственно из памяти устройства дешевле и быстрее.
Кеширование — это многоуровневый процесс. Рядовой пользователь знаком с кешированием на уровне браузера, когда проводится чистка кеша и его истории, или на уровне устройства, когда чистится кеш и «мусорные файлы» телефона или компьютера. Однако это не все уровни кеширования. Между пользователем и сервером-источником информации различают следующие уровни кеширования:
- общие кешированные данные веб-сервера — обычно это информация сразу для нескольких пользователей;
- кешированные данные сети доставки информации — это также информация сразу о нескольких пользователях;
- кеширование интернет-провайдера — это также кеш сразу о нескольких пользователях;
- кешированные данные устройства — это информация о запускаемых программах;
- кеширование веб-браузера — информация о посещенных веб-страницах.
Каждый отдельный пользователь имеет влияние только на последние два уровня кеширования: кеш устройства и веб-браузера.
Что такое кешированные данные и их актуальность
Кешированные данные — это некая сохраненная информация. Однако несложно догадаться, что такая информация устаревает, потому что кешированный ресурс постоянно изменяется. Но для пользователя важно получать «свежую» информацию. Чтобы поддерживать актуальность кеша, важно постоянно его обновлять.
Кешированные данные не сравниваются с данными сервера при каждом обращении к ним. Если бы это делалось, тогда смысла в кешировании не было бы, потому что тратилось бы много времени на проверку актуальности информации, плюс дополнительно нагружалась бы сеть. Поэтому принято считать кешированные данные актуальными и отправлять их пользователю в течение определенного времени. Время актуальности информации определяется параметрами кеша. То есть при определении кеша для ресурса ему задается период времени, во время которого кеш считается актуальным. Таким образом, браузер, запуская веб-ресурс из кеша, не проверят его актуальность с серверной версией, а лишь следит, чтобы кеш соответствовал определенному периоду. Если кеш «устарел», тогда браузер скачивает с сервера его свежую копию и отправляет ее пользователю. Если кеш актуальный, тогда информация сразу доставляется пользователю.
Чуть выше мы описали работу кеширования в браузере. Однако на уровне сервера оно происходит по похожему алгоритму, только сервер кеширует данные для нескольких пользователей. Плюс кеширует в больших масштабах, чем браузер. Например, в кеше сохраняются часто используемые веб-сайты и хранимый на них контент: аудио, видео, изображения, статьи и др. Такой подход позволяет серверам быстрее показывать веб-сайты пользователям.
Кеширование и его преимущества
Для разных уровней кеширования этот процесс несет свои преимущества. Например:
- Снижает стоимость запросов. Потому что есть возможность кешировать контент ближе к потребителю, а значит, для предоставления контента не нужно проходить весь путь по сети.
- Повышает отзывчивость. Потому что пользователь быстрее получает кешированный контент, например, из браузера — практически мгновенный процесс. А это значит, что пользователь может быстрее взаимодействовать с контентом.
- Повышает производительность. Так как кеширование происходит на разных уровнях, это означает, что нагрузка на обслуживание пользователя плавно распределяется. В конечном счете распределение нагрузки улучшает общую производительность.
- Оставляет контент доступным. В случае коротких сбоев в сети кешированные данные остаются доступными для пользователя.
Кешировать можно не весь контент. Например, контент, который очень быстро меняется, нужно кешировать осторожно, потому что есть риск, что пользователю будет показана не свежая информация. Категорически не рекомендуется кеширование конфиденциальной информации, например, личные данные или банковские реквизиты.
Стратегии кеширования
Идеальный интернет — это если можно было бы закешировать все веб-ресурсы максимально близко к пользователям. Однако с технической стороны это не представляется возможным, поэтому стратегию кеширования приходится балансировать между меняющимся контентом и временем кеша.
Есть такие ситуации, когда реализовать кеширование невозможно. Например, когда на сайте присутствует динамический контент, который очень часто меняется, или контент, который генерируется для каждого отдельного пользователя. Если закешировать такой ресурс, тогда пользователю будет предоставляться неточный контент.
Нет единой стратегии кеширования. Для каждого отдельного ресурса этот процесс будет иметь собственное значение. Важно помнить, что при создании кеша нужно соблюдать баланс. Поэтому нужно брать во внимание, что на каждом веб-ресурсе будут:
- компоненты, которые можно надолго кешировать;
- компоненты, у которых срок кеширования будет коротким;
- компоненты, которые нельзя кешировать.
Заключение
Кеширование — это способ быстрее показать нужный контент для пользователя, увеличить производительность, сократить расходы на обслуживание компонентов сайта и др. При этом не нужно думать, что кешированные данные — это волшебная палочка для веб-ресурса. Кеширование — это еще один инструмент, чтобы сделать контент и пользователя «ближе».
Источник: CoderNet
