Коротко. Методов кэширования сайта шесть основных: браузерный, серверный (page cache), объектный (Redis/Memcached), кэш опкода (OPcache), кэш запросов к базе данных и CDN. Самый весомый по эффекту — серверный page cache, обычно сокращает время ответа сервера в 3-10 раз. Объектный кэш и Redis нужны не всем — оправданы при высокой нагрузке или сложных выборках, для сайта с несколькими тысячами визитов в месяц это избыточно. Разумный порядок внедрения: page cache, OPcache, браузерный кэш, дальше — по необходимости.
Шесть методов и что каждый из них кэширует
Кэширование сайта — не один метод, а набор из нескольких независимых механизмов, каждый со своей зоной ответственности. Браузерный кэш хранит статику на устройстве посетителя. Серверный кэш страниц (page cache) хранит готовый HTML-документ. Кэш опкода (OPcache) хранит скомпилированный PHP-код. Объектный кэш (Redis, Memcached) хранит промежуточные данные приложения — например, результат сложной выборки, который используется на нескольких страницах. Кэш запросов к базе данных хранит результаты конкретных SQL-запросов. CDN хранит копии статики на серверах, географически близких к посетителю. Разница между этими методами — не только в том, что они кэшируют, но и в том, насколько заметен эффект и насколько сложно их внедрить.
Page cache — метод с самым заметным эффектом
Кэш страниц перехватывает запрос до того, как он доходит до движка CMS, и отдаёт готовый HTML-файл напрямую с диска или из памяти. Это даёт основной прирост скорости, потому что убирает всю цепочку «PHP → база данных → сборка HTML» для уже закэшированной страницы. Типичный эффект — сокращение TTFB (время ответа сервера) с 500-1500 мс до 50-150 мс. Внедрение на популярных CMS обычно не требует программирования — есть готовые плагины (WordPress) или встроенные механизмы (Bitrix, LiteSpeed Cache на уровне хостинга). Ограничение метода — необходимость исключений для персонализированных страниц: корзина, личный кабинет, страницы с формами. Без правильных исключений метод не просто не работает, а может показывать одному посетителю данные другого.
OPcache — метод, который часто уже включён, но недонастроен
OPcache — встроенный в PHP механизм, сохраняющий скомпилированный байт-код скриптов в памяти, чтобы не разбирать PHP-файлы заново при каждом запросе. Он включён по умолчанию почти на всех современных хостингах, поэтому «внедрять» его обычно не нужно — нужно проверить и донастроить лимит памяти. Значение по умолчанию (часто 128 МБ) может не хватать сайту с большим количеством плагинов и модулей, из-за чего кэш постоянно перезаписывается и не даёт эффекта. Эффект от правильной настройки — не всегда заметен по TTFB напрямую, но снижает нагрузку на процессор сервера, что особенно важно при одновременных заходах нескольких посетителей.
Объектный кэш и Redis/Memcached — метод для нагруженных проектов
Объектный кэш хранит в оперативной памяти результаты дорогих операций — например, подсчёт количества товаров в категории с фильтрами, который иначе выполнялся бы заново при каждом заходе. Redis и Memcached — конкретные технологии хранения такого кэша. Метод оправдан там, где page cache недостаточно: сайты с большим количеством динамических, персонализированных или часто меняющихся данных (маркетплейсы, сервисы с личным кабинетом на каждой странице, сайты с высокой посещаемостью). Для сайта с посещаемостью в несколько тысяч визитов в месяц и стандартным каталогом внедрение Redis обычно избыточно — сложность настройки и дополнительная нагрузка на администрирование сервера (это уже зона технической поддержки) не окупаются заметным приростом скорости, которого и так добивается page cache.
Браузерный кэш и CDN — методы для повторных визитов и географии
Браузерный кэш управляется заголовками Cache-Control и работает только при повторном посещении сайта тем же браузером — для сайтов с высокой частотой возврата (интернет-магазины, сервисы) эффект ощутим, для одноразовых рекламных лендингов — минимален. CDN кэширует статику на распределённой сети серверов и даёт эффект пропорционально расстоянию между сервером сайта и аудиторией: для локальной аудитории в одном регионе с сервером — единицы миллисекунд разницы, для распределённой по стране или миру аудитории — заметное ускорение доставки. Оба метода дешёвы и просты во внедрении по сравнению с объектным кэшем, но не решают проблему медленной сборки HTML — это задача page cache.
Сравнение методов по эффекту и сложности
| Метод | Что кэширует | Типичный эффект | Сложность внедрения |
|---|---|---|---|
| Page cache (сервер) | Готовый HTML-документ | TTFB в 3-10 раз быстрее | Низкая — готовые плагины |
| OPcache | Скомпилированный PHP-код | Снижение нагрузки на CPU | Низкая — донастройка лимита |
| Браузерный кэш | Статика (картинки, CSS, JS) | Экономия при повторных визитах | Низкая — заголовки сервера |
| CDN | Статика на удалённых серверах | Зависит от географии аудитории | Средняя — подключение сервиса |
| Объектный кэш (Redis) | Промежуточные данные приложения | Заметен при высокой нагрузке | Высокая — нужен отдельный сервис |
| Кэш запросов к БД | Результаты конкретных SQL-запросов | Разгружает базу данных | Высокая — обычно часть объектного кэша |
В каком порядке внедрять методы
Для подавляющего большинства сайтов на CMS порядок такой: сначала page cache — он даёт основной и самый заметный эффект при наименьших усилиях. Затем проверка и донастройка OPcache — почти бесплатно по времени, поскольку механизм обычно уже включён. Дальше — заголовки браузерного кэша для статики. CDN подключают, если аудитория географически распределена или бывают резкие всплески трафика. Объектный кэш и кэш запросов к базе данных — методы последней очереди, оправданные только когда первые четыре уже настроены, а сайт всё равно испытывает нагрузку: например, интернет-магазин с десятками тысяч товаров и сложной фильтрацией. Внедрять Redis до того, как настроен page cache, — почти всегда трата ресурсов не по приоритету. Полный разбор, какие методы уже работают на конкретном сайте, — часть SEO-аудита, а внедрение недостающих уровней — обычная задача при разработке и доработке сайта.
С какого метода кэширования начать, если ничего не настроено?
С page cache — серверного кэша страниц. Он даёт основной эффект и на большинстве CMS внедряется через готовый плагин без программирования, обычно за 30-60 минут вместе с тестированием.
Нужен ли Redis небольшому интернет-магазину?
Как правило нет. Redis оправдан при высокой нагрузке, сложных динамических выборках или больших каталогах в десятки тысяч товаров. Для типового магазина в несколько тысяч визитов в месяц page cache и OPcache закрывают основную часть проблемы со скоростью.
Чем OPcache отличается от page cache?
OPcache хранит скомпилированный код PHP-программы, page cache хранит готовую HTML-страницу для конкретного посетителя. Первый ускоряет выполнение кода на каждом запросе, включая запросы, для которых нет закэшированной страницы; второй убирает выполнение кода вовсе для уже закэшированных страниц.
Можно ли внедрить все методы кэширования самостоятельно?
Page cache, OPcache и браузерный кэш — обычно да, особенно на популярных CMS с готовыми инструментами. CDN и особенно объектный кэш с Redis требуют технической настройки на уровне сервера и без опыта лучше доверить разработчику.
Сколько по времени занимает внедрение всех методов сразу?
Базовые три метода (page cache, OPcache, браузерный кэш) — от нескольких часов до дня в зависимости от сложности сайта. CDN — ещё несколько часов на подключение и тестирование. Объектный кэш с Redis — от одного дня, поскольку требует настройки отдельного сервиса и интеграции с CMS.
Узнать, какие методы кэширования нужны именно вашему сайту
Проверим текущую настройку по всем уровням и покажем, что даст эффект, а что окажется лишним расходом.