Кеш: определение и все области, где используется кеширование

Мы собрали области, где используется кеш, — от железа до веба — в одно дерево по классификации Википедии, MDN и официальной документации WordPress. CPU, операционные системы, базы данных и браузеры называют это одинаково, поэтому «очистить кеш» на разных уровнях значит удалить разное.
Кеш — это временное хранение часто используемых или скоро нужных данных в хранилище, которое быстрее исходного; на повторный такой же запрос отвечает копия, а не оригинал.
Статья английской Википедии Cache (computing) делит кеши на аппаратные — кеши CPU и GPU — и программные: дисковый, веб-, DNS-кеш и кеш баз данных. Дерево ниже группирует эту классификацию по месту, где находится кеш, а веб-кеш разделён по MDN на private cache и shared cache.
Порядок, в котором кеш браузера, CDN и внутренний кеш сервера обрабатывают один запрос WordPress, показан в статье Кеш сайта & внутренний кеш сервера: как работает кеширование в WordPress — на симуляторе.
Ⅰ. Устройства пользователя
Кеш на устройствах пользователя — компьютерах и смартфонах — делится на кеш операционной системы (ОС), кеш браузера и кеш мобильных приложений.
Дисковый кеш (page cache) держит прочитанные с диска данные в памяти, им управляет ядро ОС. Кеш DNS хранит недавно запрошенные домены и IP-адреса.
При повторном запросе того же ресурса браузер не обращается к серверу или только проверяет, изменился ли он. С Service Worker (Cache API) веб-приложение открывается из сохранённых ресурсов даже офлайн.
Приложения с тяжёлым контентом сохраняют полученные данные и недавно просмотренное на устройстве, чтобы не скачивать то же самое снова.
Ⅱ. Кеш сервера и приложений
Серверный кеш подключается к сборке страницы после того, как запрос дошёл до сервера. Официальная документация WordPress делит его на плагины кеширования (кеш страниц), объектный кеш и серверный кеш (opcode-кеш вроде OPcache).
На запрос той же страницы отдаётся сохранённая копия без запуска PHP. Бывают плагины кеширования и кеш веб-сервера.
При повторном запуске того же файла компиляция пропускается. Встроен по умолчанию с PHP 5.5.
Часто используемые данные хранятся в памяти, чтобы не повторять одни и те же запросы.
Веб-фреймворки хранят отрисованные шаблоны и результаты запросов в собственном кеше.
Ⅲ. Кеш доставки контента и сетевой инфраструктуры
Кеш сетевой инфраструктуры отвечает копиями между посетителем и исходным сервером, сокращая физическое расстояние и нагрузку на исходный сервер. В стандарте HTTP-кеширования это shared cache, общий для многих посетителей.
Контент отдаётся с ближайшего к посетителю из серверов по всему миру. Об устройстве и преимуществах — в статье Что такое CDN? Зачем он нужен и 5 преимуществ — там это разобрано подробно.
Прямой прокси хранит ответы на стороне клиента, как в корпоративной сети, а обратный — перед сервером.
Сетевое оборудование хранит соответствия в кеше ARP, а DNS-резолверы провайдеров и публичные резолверы — результаты запросов на время TTL записи.
Ⅳ. Кеш баз данных и систем хранения
Дисковый ввод-вывод медленный, поэтому базы данных и накопители держат часто читаемые данные в памяти.
Часто читаемые данные и индексы держатся в памяти. Кеш запросов MySQL удалён в версии 8.0; в MariaDB он остался, но по умолчанию выключен.
Память в контроллере жёсткого диска и DRAM внутри SSD временно хранят данные и сокращают задержки ввода-вывода.
Ⅴ. Аппаратный кеш
Аппаратный кеш — быстрая память внутри CPU и GPU, которая обрабатывает данные быстрее основной памяти (RAM).
L1 есть у каждого ядра отдельно и делится на кеш инструкций и кеш данных, а L3 общий для всех ядер. Блок управления памятью (MMU) хранит результаты трансляции виртуальных адресов в физические в TLB.
Повышает эффективность GPU в играх, 3D-графике и машинном обучении.
Ⅵ. Кеш в облаке и виртуализации
В облаке и виртуализации повторно используют образы контейнеров, среды выполнения функций и результаты сборки, чтобы ускорить развёртывание и запуск.
Образ Docker состоит из нескольких слоёв, и неизменённые слои не пересобираются и не скачиваются заново.
Среда выполнения после вызова какое-то время сохраняется и используется для следующего вызова, сокращая время инициализации (Cold Start) (Warm Start).
Сокращает время повторных сборок.
🔢 FAQ & рекомендуемые материалы









ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.