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

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

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

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

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

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

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

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

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

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

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

Тайники — это мощная концепция, которая кажется повсюду, как только вы начнете ее искать!