Кеш сайта & внутренний кеш сервера: как работает кеширование в WordPress

Проверка кеша сайта и внутреннего кеша сервера на сервере Nginx + Apache показала: запросы страниц WordPress спускаются по порядку от браузера через CDN, кеш страниц, OPcache и Redis и останавливаются на том уровне, где есть копия. На запросы страниц, пришедшие прямо на исходный сервер, nginx сразу отдаёт HTML-файл, созданный WP Rocket, и до PHP и базы данных дело не доходит.
Ⅰ. Структура кеша WordPress
В вычислительной технике кеш — это способ временно хранить данные, чтобы быстро получать к ним доступ; в вебе он работает по тому же принципу и заметно повышает производительность.
Кеширование сохраняет данные, поэтому при каждом посещении сайта серверу не нужно заново всё собирать: сохранённые данные загружаются быстро, и время загрузки страницы сокращается. Это снижает нагрузку на сервер и улучшает пользовательский опыт.
Кеши, которые используются при запросах WordPress, делятся на две ветви: кеш сайта и внутренний кеш сервера. Стандарт HTTP-кеширования делит кеш, который хранится только в браузере одного посетителя, на private cache, а общий для многих посетителей кеш CDN и прокси — на shared cache; в этой статье оба объединены под названием «кеш сайта».
Кеш страниц, OPcache и объектный кеш подключаются к процессу работы WordPress внутри сервера. В стандарте HTTP для них нет отдельной категории, а официальная документация WordPress делит их на плагины кеширования (кеш страниц), объектный кеш и серверный кеш (opcode-кеш вроде OPcache).
Все области, где применяется кеш, собраны в статье Кеш: определение и все области, где используется кеширование — там это разобрано подробно; четыре направления оптимизации производительности, включая кеширование, описаны в статье Оптимизация производительности сайта: структура и определение — там это разобрано подробно.
В симуляторе ниже выберите кеш в дереве слева и нажмите чип — увидите, на каком уровне останавливается запрос. Первым уровнем, который владельцы сайтов на WordPress включают с помощью плагина кеширования, обычно становится кеш страниц.
| Уровень | Где хранится | Что хранит | Пример для Nginx + Apache |
|---|---|---|---|
| Кеш браузера | Устройство посетителя | HTML·CSS·JS·изображения·шрифты | CSS·изображения 7 дней |
| Кеш CDN·прокси | Перед сервером (edge·обратный прокси) | Копии страниц и статических файлов | Bunny CDN |
| Кеш страниц | Диск и память сервера | HTML, созданный PHP | WP Rocket + nginx |
| OPcache | Память сервера | Байт-код PHP | PHP 8.3, JIT выключен |
| Объектный кеш | Память сервера | Результаты запросов и объекты | Redis |
Ⅱ. Кеш сайта
Кеш сайта — это кеш, в котором браузер посетителя и CDN или прокси сохраняют копию так, как сервер указал в заголовках ответа. Типичные заголовки — [Cache-Control]·[ETag]·[Expires], а когда срок хранения истекает, условный запрос ([304 Not Modified]) проверяет, изменилось ли что-нибудь.
1️⃣ Кеш браузера
Кеш браузера — это HTTP-кеш в веб-браузере посетителя. Он хранит HTML·CSS·JavaScript·изображения·шрифты, и при повторном запросе того же ресурса браузер либо вообще не обращается к серверу, либо только проверяет, не изменился ли он.
Срок хранения задаёт сервер, а не посетитель. Сервер Nginx + Apache ниже велит хранить CSS и изображения 7 дней, а HTML-страницы отдаёт без срока, чтобы при каждом новом посещении их проверяли.
If-None-Match: "6ab12775-2ee8"cache-control: max-age=604800 expires: Sat, 17 Oct 2026 03:21:00 GMT etag: "6ab12775-2ee8"
etag: "6ac9298c-95575" last-modified: Fri, 09 Oct 2026 17:51:08 GMT
2️⃣ Кеш CDN · прокси
Кеш CDN и прокси находится между посетителями и исходным сервером и общий для многих посетителей. Прямой прокси стоит на стороне посетителя, например в корпоративной сети, а обратный прокси и CDN — перед сервером и отвечают сохранённой копией вместо исходного сервера.
Типичный обратный прокси — Varnish Cache, а CDN вроде Bunny CDN и Akamai устроены так же. С гео-DNS посетители из региона исходного сервера подключаются прямо к нему, а посетителям из других регионов отвечает ближайший edge-сервер CDN (например, Bunny CDN), который хранит даже HTML.
Устройство и преимущества CDN описаны в статье Что такое CDN? Зачем он нужен и 5 преимуществ — там это разобрано подробно.
Ⅲ. Внутренний кеш сервера
Внутренний кеш сервера подключается к процессу, в котором WordPress собирает страницу после того, как запрос дошёл до исходного сервера. Сервер на Nginx + Apache обрабатывает запрос в порядке ниже, и если на раннем шаге находится копия, последующие шаги пропускаются.
Конфигурацию Nginx + Apache можно выбрать как опцию в Cloudways и ScalaHosting. В Cloudways для каждого приложения выбирается Hybrid Stack (Nginx + Apache) или Lightning Stack (только Nginx), а в ScalaHosting в SPanel можно включить настройку, которая ставит Nginx перед Apache.
| Кеш | Что хранит | Когда сохраняется |
|---|---|---|
| 1️⃣ Кеш страниц | Готовая HTML-страница | 🅑 ⑤ WP Rocket сохраняет в файл при ответе |
| 2️⃣ OPcache | Скомпилированный PHP-код (байт-код) | 🅑 ② При первом запуске PHP-файла |
| 3️⃣ Объектный кеш | Фрагменты данных: результаты запросов, опции | 🅑 ③ Когда WordPress впервые получает данные |
1️⃣ Кеш страниц
Кеш страниц ещё называют полностраничным кешем (full-page cache), а поскольку он хранит HTML — иногда HTML-кешем. Вся веб-страница, созданная PHP, сохраняется как статический HTML-файл и отдаётся на запросы той же страницы без запуска PHP. Это случай 🅐 в порядке обработки выше.
Хранится он в памяти сервера (RAM) или на диске (HDD/SSD): память быстрая, но дорогая и ограниченная по объёму, а диск вместительный, но сравнительно медленный.
| Тип | Пример | Как хранит и отвечает |
|---|---|---|
| Плагин кеширования | WP Rocket · WP Super Cache · W3 Total Cache · Cache Enabler | WordPress сохраняет страницу в HTML-файл, а веб-сервер отдаёт этот файл. |
| Кеш веб-сервера | Кеш Nginx FastCGI · LiteSpeed Cache | Веб-сервер сам сохраняет ответ PHP и отдаёт его на следующий запрос. |
| Кеш обратного прокси | Varnish | Кеш-сервер перед веб-сервером сохраняет страницу и отвечает. |
В конфигурации Nginx + Apache nginx сам читает и отдаёт HTML-файл, созданный WP Rocket, а в заголовке ответа появляется [x-rocket-nginx-serving-file: HIT]. Как включить и настроить кеш страниц в WP Rocket, рассказано в статье Настройка WP Rocket — там это разобрано подробно.
2️⃣ OPcache
OPcache хранит в памяти заранее скомпилированный байт-код PHP, поэтому при повторном запуске того же файла парсер PHP не нужен. OPcache встроен начиная с PHP 5.5, а прежние APC и XCache не поддерживают PHP 7 и сегодня не используются. Это шаг ② схемы 🅑 в порядке обработки выше.
| Тип | Статус | Описание |
|---|---|---|
| Zend OPcache | Встроен с PHP 5.5 | Стандартный opcode-кеш на сегодня, включается через [opcache.enable=1]. |
| OPcache JIT | Входит в OPcache с PHP 8 | Ещё раз преобразует байт-код в машинный код и выполняет его; включается и выключается через [opcache.jit]. |
| APC | Разработка прекращена | Opcode-кеш, которым пользовались до OPcache; функция кеширования данных перешла в APCu. |
| XCache | Разработка прекращена | Не поддерживает PHP 7. |
| WinCache | Для серверов Windows (IIS) | Opcode-кеш, который официальная документация WordPress называет наряду с OPcache. |
OPcache включается настройкой PHP [opcache.enable=1], а появившийся в PHP 8 JIT можно отдельно выключить через [opcache.jit=disable]. Установка и настройка описаны в статье Zend OPcache: принцип, установка и настройка — там это разобрано подробно.
3️⃣ Объектный кеш
Объектный кеш хранит результаты запросов к базе данных или вычисленные объекты в хранилище в памяти, например Redis или Memcached. По умолчанию WordPress помнит объекты только в пределах одного запроса, и результаты сохраняются после его окончания, только если подключить хранилище вроде Redis. Это шаг ③ схемы 🅑 в порядке обработки выше.
| Тип | Категория | Сохраняется после запроса? | Описание |
|---|---|---|---|
| WP_Object_Cache | Стандарт WordPress | Нет | Встроенный кеш, который помнит данные только в пределах одного запроса. |
| Redis | Объектный кеш | Да | Отдельное хранилище в памяти, подключается через drop-in плагина Redis Object Cache. |
| Memcached | Объектный кеш | Да | Отдельное хранилище в памяти. |
| APCu | Объектный кеш | Да (в пределах одного сервера) | Хранит данные в общей памяти PHP. |
| Файл | Объектный кеш | Да | Хранит данные в файлах на диске. |
| Буферный пул InnoDB | Собственный кеш базы данных · не объектный кеш | Да | MySQL и MariaDB держат данные таблиц и индексы в памяти. |
| Кеш запросов | Собственный кеш базы данных · не объектный кеш | — | Удалён в MySQL 8.0; в MariaDB остался, но по умолчанию выключен. |
WordPress подключается к Redis через drop-in-файл ([object-cache.php]), который добавляет плагин Redis Object Cache. Установка описана в статье Установка и настройка Redis Cache в WordPress — там это разобрано подробно.
🔢 FAQ & рекомендуемые материалы









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