Что такое кэширование?


Деньги-деньги, кэш-кэш 💵

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

Начнем с современного официального определения:

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

Логично…

Да, получается, что кэш — это как маленькая система памяти в вашем браузере, которая запоминает то, что вы делали раньше, чтобы в следующий раз сделать это быстрее… так?

По сути, да.

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

Впрочем, как всегда, мы можем копнуть немного глубже. 🎢

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

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

Подождите… вот почему «очистка кэша» часто может решить проблему?

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

Значит, кэш есть только у браузеров?

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

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

Снова откопали библиотечную аналогию! 📚

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

Хорошо, я понял, но какое отношение это имеет к моему хранилищу памяти?

Я рад, что вы спросили!
Подумайте, что произойдет, если ваш кэш (рабочий стол) переполнится? Как бы вы узнали, от какой информации (книг) нужно избавиться в первую очередь? Вам нужно больше места!

Не паникуйте… у нас есть стратегия выселения кэша.

Нет, правда… именно так она и называется. Мы сократим ее до CES.

🤓Let’s get nerdy….

Common CES’

Наименее часто используемый

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

Случайная замена

Крепко возьмите логику за шиворот и выбросьте ее наружу.

Как вы, вероятно, догадались, эта стратегия предполагает удаление случайного элемента, когда кэш заполнен 🤷🏼♀️.
Эта стратегия наиболее проста в реализации и на практике не слишком отличается от Least Recently Used. Она используется в небольших ARM-процессорах, чтобы сохранить легкость операций и простоту конструкции.


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

Спасибо Emmie за предложение темы!

Оцените статью
Procodings.ru
Добавить комментарий