Что такое кэш? Как кэшированные данные ускоряют работу?

Что такое кэш? Как кэшированные данные ускоряют работу?

Современный процессор способен извлечь значение из ближайшего кэша менее чем за наносекунду. Для получения того же значения из основной памяти требуется примерно в сто раз больше времени. Поэтому чип делает очевидное: он хранит копию данных, которые ему, вероятно, понадобятся, прямо рядом с собой. Эта копия и есть кэш, и этот трюк повторяется на каждом уровне вычислений, от кремниевой подложки вашего процессора до сервера, который доставил эту страницу. В этом руководстве объясняется, что такое кэш, как работает кэширование, где он незаметно располагается и стоит ли его очищать.

Определение кэша: что такое кэш на самом деле

Кэш — это временное хранилище. Небольшое, быстрое и расположенное как можно ближе к тому, что в нём нуждается. Он хранит копии данных, которые система ожидает снова использовать, чтобы в нужный момент она могла получить доступ к копии, вместо того чтобы повторять медленную или дорогостоящую работу. Откройте эту страницу во второй раз, и значительная её часть загрузится из копии, уже находящейся на вашем компьютере, а не с сервера.

Ключевое слово здесь — «временный». Кэшированные данные никогда не являются оригиналом. Это дубликат, хранящийся исключительно для скорости, и вы можете удалить его в любой момент. Удалите его, и ничего ценного не исчезнет. Система просто вернется к исходному источнику и восстановит копию. Ваш банковский баланс не хранится в кэше; копия веб-страницы, отображающая этот баланс, может храниться там. Этот разрыв между источником истины и одноразовой копией — главная причина, по которой кэширование безопасно добавлять ко всему. В худшем случае, если копия отсутствует или неверна, система просто пожимает плечами, получает данные из источника и продолжает работу.

Как работают кэши: попадание, промах и вытеснение из кэша.

В любом кэше, повсюду, действует один вопрос: есть ли у меня уже копия этого? Да означает быстрый ответ. Предоставить копию, пропустить медленный путь, готово. Нет означает, что вы выполняете медленную работу один раз: получаете данные из источника, возвращаете результат и сохраняете копию на выходе, чтобы будущие запросы обрабатывались быстро. В этом и заключается весь механизм. Остальное — это учёт двух сложных проблем: что отбрасывать, когда место заканчивается, и как избежать возврата устаревшей копии.

Попадание в кэш против промаха в кэше

Нашли? Это попадание в кэш. Нет? Промах в кэше, который заставляет обратиться к более медленному хранилищу. Доля запросов, заканчивающихся попаданием, называется коэффициентом попадания, и это тот показатель, за которым инженеры действительно следят. Сеть доставки контента, обслуживающая статические файлы, такие как изображения и таблицы стилей, стремится к показателю от 95 до 99 процентов. Достигните этого показателя, и почти каждый посетитель получит ближайшую копию, в то время как исходный сервер останется практически нетронутым. Низкий коэффициент попадания означает, что кэш в основном служит для украшения.

Когда кэш заполняется: политика выселения

Кэш намеренно сделан небольшим. Быстрое хранение данных стоит денег, поэтому места для всего никогда не хватает, и как только кэш заполняется, что-то приходится удалять. Правило, определяющее проигравшую сторону, — это политика удаления. Обычно используется правило наименьшего количества недавно использованных записей (LRU): удаляется всё, что дольше всего оставалось нетронутым, с расчётом на то, что то, что вы игнорировали в последнее время, вы будете игнорировать и дальше. Другие схемы подсчёта используют другой подход. Правило наименьшего количества часто использованных записей (LFU) отслеживает, как часто к каждому элементу обращаются. Правило «первым вошёл — первым вышел» (FIFO) просто удаляет самую старую запись. Та же авантюра, только в другом виде. Каждая политика — это, по сути, попытка угадать, какой экземпляр вы будете меньше всего скучать.

Поддержание актуальности копий: TTL и политики записи.

Копия действительна только до тех пор, пока она соответствует источнику. Поэтому большинство кэшей помечают каждую запись временем жизни (TTL): обратным отсчетом, по истечении которого копия считается просроченной и должна быть проверена или получена заново. В веб-среде этот таймер устанавливается заголовком Cache-Control. Правила основаны на RFC 9111 , и директива max-age позволяет кэшировать ответ до года, или 31 536 000 секунд, если вам нужна точная цифра. Запись — это вторая половина проблемы. Сквозная запись сохраняет данные одновременно в кэш и источник, что безопасно, но медленнее. Обратная запись сохраняет данные в кэш сейчас, а в источник позже, что быстро, но оставляет короткий промежуток времени, в течение которого данные не совпадают. Выберите свой компромисс.

Что такое кэш?

Типы кэша: от ЦП до сети доставки контента

Вот что упускают из виду большинство объяснений. Кэш браузера и кэш L1 ЦП звучат как разные миры, но это одна и та же идея, но на разных расстояниях. Каждый слой хранит копии труднодоступных данных рядом с тем, что в них нуждается. Если пройтись по лестнице изнутри наружу, то схема будет повторяться на всем протяжении.

Кэширование памяти: уровни кэша ЦП L1, L2, L3

Самое быстрое кэширование происходит непосредственно в процессоре. Современные процессоры имеют три уровня кэша, построенных на основе SRAM — типа памяти, который намного быстрее, чем DRAM, используемая для основной памяти, и намного дороже в пересчете на байт. L1 — крошечный и практически мгновенный кэш, несколько десятков килобайт на ядро, отвечающий примерно за наносекунду. L2 больше и немного медленнее. L3 еще больше и используется совместно несколькими ядрами; процессор Intel Core i9-14900K поставляется с 36 МБ кэша, а AMD Ryzen 9 7950X3D увеличивает размер L3 до 128 МБ. Все это существует для того, чтобы скрыть один недостаток: извлечение данных из L1 занимает менее наносекунды, в то время как основная память DDR5 — около 70, что примерно в сто раз больше. Кэш работает потому, что программы повторно используют одни и те же данные и данные, находящиеся рядом с ними, — это называется локальностью ссылок.

Слой Типичный размер Типичное время доступа Что в нём содержится
Кэш L1 ЦП 32-80 КБ на ядро ~0,7-1 нс Следующие инструкции и значения
Кэш L2 ЦП 0,5-2 МБ на ядро ~3-4 нс Недавно использованные данные вблизи ядра
Кэш ЦП L3 16-128 МБ общего доступа ~10-20 нс Данные передаются между ядрами.
Основная память (ОЗУ) 8-64 ГБ ~70-100 нс Запущенные программы и активные данные
SSD-накопитель 256 ГБ-4 ТБ ~50-100 мкс Файлы и операционная система
Краевой узел CDN варьируется ~20 мс по сети Веб-копии рядом с посетителем
Исходный сервер варьируется ~100-200 мс межрегиональный Источник истины

Дисковый, операционный и прикладной кэш

Поверх аппаратного обеспечения программное обеспечение хранит собственные кэши. Ваша операционная система хранит часто используемые данные, такие как недавно прочитанные файлы, в свободной оперативной памяти, поэтому их повторное открытие происходит мгновенно. Базы данных кэшируют результаты распространенных запросов. Приложения добавляют специальный слой в оперативной памяти, часто Redis или Memcached, который находится между приложением и его базой данных и обрабатывает повторные запросы за микросекунды. Задача идентична задаче центрального процессора: хранить наиболее важные данные в более быстром хранилище, чтобы не платить за медленную работу дважды.

Кэширование на стороне сервера и CDN

Самый внешний слой охватывает весь интернет. Когда веб-сервер кэширует готовые страницы, он избегает их перестройки для каждого посетителя. Сеть доставки контента идет еще дальше, копируя эти ресурсы на периферийные серверы, расположенные по всему миру, так что каждый запрос обрабатывается машиной, физически расположенной рядом с пользователем. Запрос к CDN может быть обработан примерно за 20 миллисекунд, в то время как запросу требуется от 100 до 200 миллисекунд, если ему приходится пересекать континенты до источника. Эта модель сейчас доминирует в интернете: к 2024 году примерно 75 процентов стороннего контента предоставлялось через CDN.

Кэш браузера: что хранит ваш веб-браузер.

Кэш браузера — это то, с чем сталкивается большинство людей. Загружая сайт, ваш веб-браузер незаметно сохраняет его части на вашем устройстве: HTML-код, таблицы стилей, скрипты, изображения, шрифты. При повторном посещении он считывает эти файлы прямо с диска, вместо того чтобы загружать их заново, поэтому второе посещение веб-страницы происходит быстрее, чем первое. Логотип сайта? Скачивается один раз и используется на каждой странице, где он отображается.

Вот что меня удивляет: большая часть этой скорости остаётся невостребованной. По состоянию на 2021 год около 90,4% ответов веб-сайтов на настольных компьютерах были кэшируемыми , однако 52% сайтов всё ещё оказывались ниже 25-го процентиля в стандартном аудите кэширования браузеров. Преимущество просто есть, оно бесплатно, и большая часть веб-сайтов просто проходит мимо него. Если правильно настроить кэширование, отдача будет незамедлительной. Повторные посещения становятся быстрее, потребление мобильного трафика снижается, а исходный сервер перестаёт обрабатывать одни и те же избыточные запросы.

Что такое кэш?

Преимущества кэширования: почему оно ускоряет работу

Кэширование — это компромисс. Вы тратите немного памяти и принимаете на себя небольшой риск предоставления слегка устаревшей информации, а взамен получаете скорость, меньшую нагрузку и меньшие затраты. Именно эти три преимущества объясняют, почему кэширование используется на каждом уровне, а не только на одном.

Очевидным преимуществом является скорость: предоставление копии из расположенного рядом хранилища лучше, чем пересчет результата или его передача по сети. Второе преимущество — снижение нагрузки на источник. Каждый запрос, обработанный кэшем, — это запрос, который базе данных или исходному серверу никогда не приходится обрабатывать, что позволяет системам оставаться работоспособными во время пиковых нагрузок. Третье — это просто экономия: предоставление кэшированных байтов с периферийного узла дешевле, чем их генерация заново и отправка с центрального сервера, а когда вам нужно многократно обращаться к данным, эта экономия быстро накапливается.

Впечатление от повышения производительности приложения для пользователей реально и измеримо. Исследование Google 2018 года, посвященное мобильным сайтам, показало, что сокращение времени загрузки всего на одну секунду повышает конверсию на целых 27 процентов, в то время как широко цитируемое исследование Aberdeen Group 2012 года показало, что задержка в одну секунду приводит к снижению конверсии на 7 процентов. Более быстрые страницы удерживают пользователей. Кэширование — один из самых дешевых способов добиться этого.

Тип кэша Где оно живет Что оно хранит Кто этим управляет? Типичная продолжительность жизни
Кэш ЦП (L1/L2/L3) На процессоре Горячие инструкции и данные Аппаратное обеспечение, автоматически Микросекунды
Кэш браузера Ваше устройство HTML, CSS, JS, изображения, шрифты Ваш веб-браузер От часов до года
кэш приложения память сервера приложений Результаты запроса, сессии Разработчики (Redis, Memcached) Секунды в часы
Кэш сервера/CDN Пограничные серверы по всему миру Страницы, медиафайлы, ответы API Владелец сайта и CDN TTL для управления кэшем
кэш DNS ОС, маршрутизатор, резолвер Сопоставление домена с IP-адресом DNS-резолвер от 5 минут до 24 часов

Следует ли очищать кэшированные данные и когда это необходимо делать?

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

Итак, когда стоит очищать кэш? Честно говоря, всего три ситуации. Сайт перестаёт работать или продолжает отображать устаревшую кэшированную версию после обновления, и эта старая копия в кэше браузера почти всегда является виновником; очистка кэша принудительно запускает чистую загрузку. Вы работали на общедоступном компьютере и хотите удалить локальные следы просмотренного контента. Или на вашем телефоне остался последний гигабайт, и вам нужно освободить место, поскольку кэш браузера может незаметно увеличиться до нескольких гигабайт. За пределами этих случаев очистка ничего не даёт. Она замедляет ваше следующее посещение всех сайтов, пока браузер восстанавливает свои копии, а некоторые браузеры при этом выходят из вашей учетной записи. Самое распространённое заблуждение: очистка кэша не удаляет ваши cookie-файлы или сохранённые пароли. Они хранятся в отдельном хранилище и сохраняются после очистки кэша, если вы специально не отметите соответствующие поля.

Браузер Где очистить кэш?
Хром Настройки, Конфиденциальность и безопасность, Удаление данных просмотра, Кэшированные изображения и файлы
Firefox Настройки, Конфиденциальность и безопасность, Файлы cookie и данные сайтов, Очистка данных
Сафари Настройки, Safari, Очистить историю и данные веб-сайтов
Край Настройки, Конфиденциальность, Выберите, что очистить

Кэш, куки и буфер: как разобраться в этом вопросе.

Три слова, которые постоянно путают, все они о хранении данных. Каждое выполняет свою функцию. Кэш хранит копии контента, чтобы вы могли быстрее получить к нему доступ в следующий раз. Cookie — это крошечная заметка, которую сайт оставляет, чтобы запомнить вас: сеанс входа в систему, языковые настройки, сохраненные предпочтения. Он содержит информацию об идентификации, а не о контенте. Буфер — это совсем другое. Он хранит данные в процессе передачи, например, несколько секунд видео, которые загружаются перед тем, как вы начинаете смотреть. Проще говоря: кэшированные данные сохраняются для повторного использования, cookie запоминает, кто вы, а буфер очищается в тот же момент, когда используется.

Что следует помнить о кэше и кэшировании

Как только вы начнете воспринимать кэширование не более чем как «хранение копии медленно работающей программы рядом с местом, где она необходима», он перестанет быть просто аппаратной функцией и станет привычкой, пронизывающей все вычислительные процессы, от загрузки данных за 0,7 наносекунды на процессоре до копии этой страницы, хранящейся на периферийном сервере недалеко от вашего города. Практический урок, который веб-технологии еще не усвоили: большая часть этой скорости бесплатна, и большинство сайтов по-прежнему обходятся без кэширования. В следующий раз, когда страница откроется в мгновение ока, вы будете точно знать, какая именно копия спасла вас от необходимости копироваться.

Любые вопросы?

Представьте себе хранилище копий, расположенное где-то в быстром месте. Когда данные загружаются медленно, компьютер сохраняет копию поблизости, а затем использует её в следующий раз, вместо того чтобы повторять работу. Ваш процессор делает это менее чем за наносекунду. Веб-сайт делает это на расстоянии нескольких континентов. Идея та же, масштаб совершенно другой.

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

Кэш хранит копии файлов, чтобы при повторном посещении страницы загружались быстрее. Очищать его? Обычно нет. Три причины это оправдывают: сбои или устаревшая информация на сайте, конфиденциальность на общем компьютере или нехватка места на телефоне. Нет подобных причин? Оставьте его в покое. Кэш выполняет свою функцию.

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

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

Кэш хранит копии контента, такого как изображения, скрипты и шрифты, поэтому страницы загружаются быстрее. Файлы cookie — это другое дело. Они хранят небольшие метки, которые идентифицируют вас: сессию входа в систему, ваши настройки сайта. Кэш отвечает за скорость; файлы cookie запоминают, кто вы. Это отдельные хранилища, поэтому очистка одного не затрагивает другое.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.