hostprofi.ru
Подобрать хостинг
Термин·буква К

Кэширование (caching)

краткое определение

Кэширование (caching) — хранение копии данных в быстром хранилище (RAM, SSD) для ускорения повторных обращений. В веб-хостинге кэшируют страницы, объекты БД, статические файлы и DNS-записи. Правильное кэширование снижает нагрузку на сервер в 10–100 раз.

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

Уровни кэширования

  • Browser cache — браузер кэширует JS, CSS, изображения (Cache-Control: max-age).
  • CDN cache — CDN-ноды кэшируют контент рядом с пользователем.
  • Reverse proxy cache — Nginx или Varnish кэшируют HTML-ответы.
  • Application cache — Redis/Memcached для результатов запросов к БД, API-ответов.
  • Database query cache — MySQL query cache (устарел, удалён в 8.0).
  • OPcache — PHP кэширует скомпилированный байткод скриптов.

HTTP Cache-Control

# Кэшировать на 1 год (статические файлы с хэшем в имени)
Cache-Control: public, max-age=31536000, immutable

# Не кэшировать (HTML, API)
Cache-Control: no-cache, no-store

# Кэш только на клиенте
Cache-Control: private, max-age=3600

Nginx кэширование

proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m;

location / {
  proxy_cache my_cache;
  proxy_cache_valid 200 1h;
  proxy_cache_use_stale error timeout;
  proxy_pass http://backend;
}

Инвалидация кэша

«Две сложные задачи в computer science: инвалидация кэша и именование вещей» (Фил Карлтон). Стратегии инвалидации: TTL (time-to-live), cache-busting (хэш в имени файла), событийная инвалидация (при изменении данных).

История

Концепция кэша появилась в процессорной архитектуре в 1960-х годах. HTTP кэширование стандартизировано в RFC 2616 (1999). Redis создан в 2009 году как универсальный кэш и хранилище. Varnish Cache — 2006.

Связь с хостингом

На VDS кэширование — первый шаг оптимизации нагруженного сайта. WordPress + Redis Object Cache снижает нагрузку на MySQL в 5–20 раз. Nginx FastCGI cache кэширует HTML от PHP. OPcache обязателен для любого PHP-сайта. CDN снимает статику с сервера.

История кеширования в веб

Концепция кеширования в компьютерах восходит к 1968 году (кеш процессора IBM System/360). Кеш браузера появился в первых версиях NCSA Mosaic (1993). HTTP-заголовки Cache-Control стандартизированы в RFC 2616 (HTTP/1.1, 1999). Varnish Cache — высокопроизводительный HTTP-кеш — создан в 2006 году командой Dagfinn Ilmari Mannsaker для норвежской газеты VG. Redis как универсальный кеш-слой появился в 2009 году.

Уровни кеширования на хостинге

УровеньИнструментTTL
БраузерCache-Control, ETagчасы-месяцы
CDNCloudflare, BunnyCDNминуты-дни
Reverse proxyNginx FastCGI cache, Varnishсекунды-часы
ПриложениеRedis, Memcachedнастраиваемо
База данныхMySQL query cache, pg_bouncerсессия

Типичные ошибки

  • Кеширование страниц авторизованных пользователей — утечка личных данных другим пользователям.
  • Бесконечный TTL для HTML-страниц — обновления сайта не доходят до пользователей.
  • Отсутствие инвалидации кеша при обновлении WordPress — устаревший контент неделями виден в CDN.
  • Кеш не учитывает cookies: разные ответы для авторизованных и гостей должны разделяться.

Другие термины

Кэширование (caching) — что это, определение и как работает | Справочник — hostprofi.ru