Добавить в корзинуПозвонить
Найти в Дзене
IT - это просто

Что такое кэш? Простыми словами

Здравствуй, дорогой читатель! Наверняка каждый из вас хотя бы раз слышал загадочное: «Очисти кэш». Браузер просит, телефон предлагает, а продвинутые коллеги по работе советуют сделать это для ускорения. Но что это за зверь — кэш? И почему его надо «чистить»? Автор сознательно упрощает, чтобы суть стала понятна каждому — от Ильи до маленькой Арины. Поехали разбираться. Чтобы понять суть, Автор предлагает короткий экскурс в прошлое. Представьте, что когда-то компьютеры были размером с комнату, а работали как черепаха. Первые ЭВМ хранили данные на магнитных барабанах и ферритовых кольцах. Это было... неторопливо. Процессор же был шустрым парнем. В итоге процессор постоянно простаивал, потому что ждал, пока из этой древней памяти приползут данные. Инженеры чесали затылки: как занять бездельника работой? В мэйнфреймах IBM System/360 впервые поставили между шустрым процессором и тормозной памятью маленький, но молниеносный буфер. В него копировали самые нужные данные. Это как если бы вы держ
Оглавление

Здравствуй, дорогой читатель! Наверняка каждый из вас хотя бы раз слышал загадочное: «Очисти кэш». Браузер просит, телефон предлагает, а продвинутые коллеги по работе советуют сделать это для ускорения. Но что это за зверь — кэш? И почему его надо «чистить»?

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

Как люди жили без кэша

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

1950–1960-е: Время медленной памяти

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

1960-е: Идея пришла в IBM

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

Маленький буфер между процессором и памятью избавил компьютер от постоянного ожидания.
Маленький буфер между процессором и памятью избавил компьютер от постоянного ожидания.

1980-е: Кэш залез в процессор

Когда появились Intel 80386 и 80486, кэш (сначала первый уровень L1, потом L2) встроили прямо в чип. Это дало невероятный рывок. Компьютеры перестали курить в сторонке.

1990-е: Кэш пошёл в народ

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

2000-е: Кэш повсюду

Теперь без него не работает ни один смартфон, ни один сервер в интернете. DNS-кэш, кэш процессора, дисковый кэш, кэш в базах данных и даже CDN-кэш, который разносит копии сайтов по всему миру.

Как это работает?

А теперь — самое вкусное. Автор обожает аналогии с этой троицей, потому что в них — вся жизнь.

Представьте комнату, где играют Илья, Алиса и малышка Арина.

  • «Медленная память» — это огромная кладовка в конце коридора. Там лежат все игрушки семьи: старые куклы, конструкторы, мишки.
  • «Процессор» — это дети, которые хотят играть. Но бегать в кладовку за каждой игрушкой — долго и утомительно. Алиса начнёт капризничать через три минуты.

Что предлагает умный Илья? Он берёт маленькую коробку (это и есть кэш) и ставит её прямо в комнате. В эту коробку он складывает самые любимые, самые часто используемые игрушки.

Илья догадался положить самые нужные игрушки в маленькую коробку в комнате — так время на поиски сократилось в разы.
Илья догадался положить самые нужные игрушки в маленькую коробку в комнате — так время на поиски сократилось в разы.

Теперь:

  1. Алиса хочет мишку? Он вот он, в коробке в комнате! Это попадание в кэш, очень быстро.
  2. Арина захотела погремушку? Её нет в маленькой коробке. Придётся Илье сходить в кладовку, взять погремушку и заодно положить её в коробку, чтобы в следующий раз не бегать. Это промах кэша — дольше, зато полезно для будущего.

Со временем любимые игрушки меняются. Илья выбрасывает из маленькой коробки надоевшего мишку и кладёт туда новый конструктор. Так и работает кэш: он хранит копии того, что вы используете чаще всего, чтобы не дёргать медленный источник.

Где прячется кэш?

По мнению Автора, полезно знать врага (или помощника) в лицо.

Чем выше кэш, тем он быстрее, но тем меньше его размер. Законы физики не обманешь.
Чем выше кэш, тем он быстрее, но тем меньше его размер. Законы физики не обманешь.

Кэш процессора (L1, L2, L3)

Это «нагрудный карман» процессора. Самый крошечный, но безумно быстрый. Туда процессор кладёт то, что нужно прямо здесь и сейчас.

Кэш операционной системы (дисковый кэш)

Вы открыли фотку. Операционная система запомнила её в оперативной памяти. Откроете снова — она вылетит мгновенно, даже если жёсткий диск старый и скрипучий.

Кэш браузера

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

DNS-кэш

DNS - это такая записная книжка вашего компьютера. Он запоминает, что «google.com» — это такой-то IP-адрес. Чтобы не спрашивать у серверов каждый раз: «А где гугл?».

Кэш приложений и CDN

Это кэш внутри программ на телефоне и «кэш интернета» — копии сайтов, разбросанные по серверам по всему миру, чтобы вы получали данные от соседнего города, а не из Америки.

Зачем чистить то, что ускоряет?

И тут Алиса задаёт самый умный вопрос: «Если кэш такой хороший, зачем его чистить?»

Кэш — это копия. А с копиями есть три беды:

Устаревание

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

Нехватка места

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

Безопасность

Если вы играете на чужом компьютере (например, в гостях или в библиотеке), в кэше браузера могут остаться ваши фото, письма или пароли. После себя кэш нужно чистить обязательно.

Старая копия в кэше мешает увидеть обновление — приходится чистить, чтобы стряхнуть пыль.
Старая копия в кэше мешает увидеть обновление — приходится чистить, чтобы стряхнуть пыль.

Итого

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

Теперь, когда ваш браузер или телефон попросят «очистить кэш», вы не вздрогнете. Вы спокойно скажете: «А, это просто выбросить старые игрушки из коробки, чтобы положить новые». И нажмёте кнопку.

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

UPD

Автор намеренно упростил рассказ, опустив технические дебри. Но для тех, кто хочет копнуть глубже:

  • Cache Hit и Cache Miss — «попадание» (данные нашли в кэше) и «промах» (не нашли, пришлось лезть в память). Чем больше хитов, тем лучше.
  • Принцип локальности — хитрость, на которой держится кэш. Компьютеры предполагают: если вы взяли данные, то скоро вы возьмёте соседние (пространственная локальность) или эти же снова (временная локальность).
  • Ассоциативность кэша — сложное правило, как именно искать данные в кэше. Представьте, что игрушки в коробке Ильи разложены не кучей, а по строгим полочкам, чтобы быстро найти нужную.
  • Алгоритмы вытеснения (LRU и другие) — когда кэш полон, он решает, кого выгнать. LRU (Least Recently Used) выгоняет ту игрушку, к которой дольше всего не прикасались.
  • Когерентность кэша — проблема для многоядерных процессоров. Если одно ядро положило данные в свой карман, а другое ядро изменило их в памяти, как понять, что правда? Это отдельная большая история.