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

Уведомление о партнёрских ссылках v3.1
Уведомление о партнёрских ссылках v3.2 (мобильная версия)

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

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

Статья английской Википедии Cache (computing) делит кеши на аппаратные — кеши CPU и GPU — и программные: дисковый, веб-, DNS-кеш и кеш баз данных. Дерево ниже группирует эту классификацию по месту, где находится кеш, а веб-кеш разделён по MDN на private cache и shared cache.

🗂️ Где используется кеш
💻 Ⅰ. Устройства пользователя
Кеш ОСДисковый кеш · кеш DNS
Кеш браузераPrivate cache в HTTP-кеше
Кеш мобильных приложенийМиниатюры · данные сессий
🖥️ Ⅱ. Сервер и приложения
Кеш страницГотовый HTML (WP Rocket · кеш FastCGI)
OPcacheБайт-код PHP
Объектный кешRedis · Memcached
Кеш веб-фреймворковLaravel · Django
🌐 Ⅲ. Доставка контента · сеть
CDNShared cache в HTTP-кеше
Прокси-кешПрямой · обратный (Varnish)
Сетевой кешКеш ARP · кеш DNS-резолвера
🗄️ Ⅳ. Базы данных · хранилища
Внутренний кеш БДБуферный пул InnoDB · Shared Buffers
Кеш накопителейКонтроллер диска · DRAM в SSD
⚙️ Ⅴ. Железо
Кеш CPUL1 · L2 · L3 · TLB
Кеш GPUТекстуры · данные шейдеров
☁️ Ⅵ. Облако · виртуализация
Кеш контейнеровСлои Docker
Бессерверные функцииWarm Start
Кеш сборкиЗависимости · артефакты CI/CD

Порядок, в котором кеш браузера, CDN и внутренний кеш сервера обрабатывают один запрос WordPress, показан в статье Кеш сайта & внутренний кеш сервера: как работает кеширование в WordPress — на симуляторе.

Ⅰ. Устройства пользователя

  • ↳ Client-Side Cache

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

Кеш операционной системы (ОС)Память устройства (RAM)
Что хранитДанные, прочитанные с диска · домены и IP-адреса

Дисковый кеш (page cache) держит прочитанные с диска данные в памяти, им управляет ядро ОС. Кеш DNS хранит недавно запрошенные домены и IP-адреса.

Дисковый кешКеш DNS
Кеш браузераХранилище браузера
Что хранитHTML · CSS · JS · изображения · шрифты

При повторном запросе того же ресурса браузер не обращается к серверу или только проверяет, изменился ли он. С Service Worker (Cache API) веб-приложение открывается из сохранённых ресурсов даже офлайн.

private cacheService Worker
Кеш мобильных приложенийХранилище приложения
Что хранитМиниатюры · часть контента · состояние входа

Приложения с тяжёлым контентом сохраняют полученные данные и недавно просмотренное на устройстве, чтобы не скачивать то же самое снова.

YouTubeInstagram

Ⅱ. Кеш сервера и приложений

  • ↳ Server-Side Cache

Серверный кеш подключается к сборке страницы после того, как запрос дошёл до сервера. Официальная документация WordPress делит его на плагины кеширования (кеш страниц), объектный кеш и серверный кеш (opcode-кеш вроде OPcache).

Кеш страницДиск и память сервера
Что хранитГотовая HTML-страница

На запрос той же страницы отдаётся сохранённая копия без запуска PHP. Бывают плагины кеширования и кеш веб-сервера.

WP RocketКеш FastCGI в NginxLiteSpeed Cache
OPcacheПамять сервера
Что хранитСкомпилированный байт-код PHP

При повторном запуске того же файла компиляция пропускается. Встроен по умолчанию с PHP 5.5.

Opcode-кеш
Объектный кешПамять сервера
Что хранитРезультаты запросов · данные сессий

Часто используемые данные хранятся в памяти, чтобы не повторять одни и те же запросы.

RedisMemcached
Кеш веб-фреймворковПриложение
Что хранитШаблоны · маршруты · результаты запросов

Веб-фреймворки хранят отрисованные шаблоны и результаты запросов в собственном кеше.

LaravelDjango

Ⅲ. Кеш доставки контента и сетевой инфраструктуры

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

CDNEdge-серверы
Что хранитСтатические файлы · страницы

Контент отдаётся с ближайшего к посетителю из серверов по всему миру. Об устройстве и преимуществах — в статье Что такое CDN? Зачем он нужен и 5 преимуществ — там это разобрано подробно.

CloudflareAkamaiFastlyQUIC.cloud
Прокси-кешПрокси-сервер
Что хранитОтветы сервера

Прямой прокси хранит ответы на стороне клиента, как в корпоративной сети, а обратный — перед сервером.

Varnish CacheОбратный прокси Nginx
Сетевой кешСетевое оборудование · DNS-резолверы
Что хранитСоответствие IP и MAC · результаты DNS-запросов

Сетевое оборудование хранит соответствия в кеше ARP, а DNS-резолверы провайдеров и публичные резолверы — результаты запросов на время TTL записи.

Кеш ARPКеш DNS-резолвера

Ⅳ. Кеш баз данных и систем хранения

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

Внутренний кеш базы данныхПамять сервера БД
Что хранитЧасто читаемые данные · индексы

Часто читаемые данные и индексы держатся в памяти. Кеш запросов MySQL удалён в версии 8.0; в MariaDB он остался, но по умолчанию выключен.

Буферный пул InnoDBPostgreSQL Shared BuffersMongoDB WiredTiger
Кеш накопителейПамять внутри накопителя
Что хранитНедавно прочитанные · записанные данные

Память в контроллере жёсткого диска и DRAM внутри SSD временно хранят данные и сокращают задержки ввода-вывода.

Кеш контроллера дискаSSD · NVMe DRAM

Ⅴ. Аппаратный кеш

Аппаратный кеш — быстрая память внутри CPU и GPU, которая обрабатывает данные быстрее основной памяти (RAM).

Кеш CPUВнутри процессора
Что хранитИнструкции · данные · результаты трансляции адресов

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

L1L2L3TLB
Кеш GPUВнутри графического процессора
Что хранитТекстуры · инструкции шейдеров · промежуточные результаты

Повышает эффективность GPU в играх, 3D-графике и машинном обучении.

Ⅵ. Кеш в облаке и виртуализации

В облаке и виртуализации повторно используют образы контейнеров, среды выполнения функций и результаты сборки, чтобы ускорить развёртывание и запуск.

Кеш контейнеровСерверы сборки · реестры
Что хранитСлои образа

Образ Docker состоит из нескольких слоёв, и неизменённые слои не пересобираются и не скачиваются заново.

Docker
Бессерверные функцииОблачная среда выполнения
Что хранитСреда выполнения

Среда выполнения после вызова какое-то время сохраняется и используется для следующего вызова, сокращая время инициализации (Cold Start) (Warm Start).

AWS LambdaGoogle Cloud Functions
Кеш сборкиХранилище кеша CI
Что хранитБиблиотеки зависимостей · результаты компиляции

Сокращает время повторных сборок.

GitHub ActionsGitLab CI

🔢 FAQ & рекомендуемые материалы

Нет. Очистка кеша браузера удаляет только копии на устройстве посетителя. Кеш страниц на сервере и копии в CDN очищает владелец сайта — в плагине кеширования или в панели CDN.

Первый запрос сразу после очистки идёт до источника, поэтому отвечает медленнее обычного. Когда он заново создаст копию, следующие запросы снова работают с прежней скоростью, а [Preload] в WP Rocket создаёт копии заранее после очистки.

В Windows объём кеша L1, L2 и L3 показан внизу экрана [Performance] → [CPU] в диспетчере задач. В Linux те же значения видны в выводе команды [lscpu].

💾 Статьи о кеше 10 статей
🗂️ Кеш
📋 Кеш: определение и все области применения 📄 Кеш сайта & внутренний кеш сервера
📋 Настройка WP Rocket 📝 Zend OPcache 📝 Установка Redis Cache
📝 Что такое CDN? 📝 Varnish Cache
📋 Тест скорости WP Rocket 📝 Пример ускорения сайта 📝 Плагины кеша и оптимизации

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 0   +   5   =