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

Кэширование сайта

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

Кэширование сайта — технология хранения готовых HTTP-ответов, страниц, объектов БД или фрагментов HTML в быстрой памяти для повторной отдачи без повторной генерации. Снижает нагрузку на CPU и базу данных, ускоряет TTFB с 500 мс до 10–50 мс.

Кэширование сайта — сохранение готовых результатов вычислений (HTML-страниц, объектов из БД, фрагментов шаблонов) в быстрой памяти или на диске для повторного использования без повторных вычислений. Для динамического сайта кэширование — ключевой инструмент производительности: переход от генерации страницы PHP+MySQL (100–500 мс) к отдаче из кэша (5–50 мс) ускоряет TTFB в 10–100 раз.

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

Кэширование работает на нескольких уровнях одновременно:

  • HTTP-кэш браузера — браузер хранит статические файлы по заголовкам Cache-Control и Expires. Повторные визиты загружают CSS/JS/изображения из локального кэша без обращения к серверу.
  • CDN-кэшCDN кэширует статику на edge-серверах ближайших к пользователю. Первый запрос — cache miss (с origin), повторные — cache hit (с edge).
  • Reverse proxy кэшNginx proxy_cache или Varnish кэшируют целые HTML-страницы на сервере. Обходят PHP и БД полностью для кэшированных страниц.
  • OPCache PHP — кэш скомпилированного байткода PHP в памяти. Без OPCache каждый PHP-файл компилируется при каждом запросе.
  • Object cache (Redis, Memcached) — кэш объектов из БД в RAM. WordPress с Redis object cache выполняет на 60–80% меньше SQL-запросов.
  • БД query cache — MySQL кэшировал результаты запросов (убрано в MySQL 8.0 из-за проблем производительности под высокой нагрузкой).

Кэширование WordPress

Экосистема WordPress имеет специфические решения:

  • Page cache plugins — WP Rocket, W3 Total Cache, LiteSpeed Cache, WP Super Cache — генерируют статический HTML и отдают его без запуска PHP.
  • Object cache — подключается через wp-content/object-cache.php; Redis (Object Cache Pro, Redis Object Cache plugin) или Memcached.
  • Fragment cache — кэширование отдельных фрагментов шаблона (сайдбар, меню) через transient API.

История

Кэширование как концепция появилось с первыми компьютерами: CPU-кэш L1 введён в IBM System/360 Model 85 в 1969 году. Web-кэширование формализовано в HTTP/1.0 (RFC 1945, 1996) через заголовки Pragma и Expires. HTTP/1.1 (RFC 2616, 1997) ввёл Cache-Control с богатой семантикой. Varnish Cache создан в 2006 году как высокопроизводительный HTTP-кэш. Redis (2009) стал стандартом для object cache и session cache.

На что обращать внимание

Кэширование динамического контента требует стратегии инвалидации: страница товара с кэшем 24 часа не покажет изменённую цену сразу. Для авторизованных пользователей и страниц с персонализацией (корзина, личный кабинет) page cache должен быть отключён или использовать вариацию по куки. Ключи инвалидации кэша — частая причина показа устаревшего контента. Тестируйте поведение кэша при изменении контента: проверяйте cache-hit/cache-miss через заголовки (X-Cache: HIT).

Стратегия кэширования

Многоуровневое кэширование: OPcache (PHP байт-код) → Object Cache (Redis/Memcached для запросов к БД) → Page Cache (Varnish/nginx fastcgi_cache для HTML-страниц) → CDN (статические ассеты). Каждый уровень снижает нагрузку на следующий. WordPress без кэша: 1 страница → 50-100 SQL-запросов → 200-500 мс генерации. С OPcache + Redis: 1-5 SQL → 20-50 мс. С Page Cache: 0 PHP/SQL → 5-15 мс (TTFB). Redis-кэш для объектов — самое эффективное вложение для любого PHP-сайта.

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