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

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

Проверка кеша сайта и внутреннего кеша сервера на сервере 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
🌐 Кеш сайтаHTTP-кеш · классификация MDN
private cacheКеш браузера
shared cache
proxy cacheПрокси в сетях компаний и провайдеров
managed cacheCDN · обратный прокси (Varnish)
🖥️ Внутренний кеш сервераКлассификация официальной документации WordPress
Кеш страницСтатический HTML от плагина кеширования (WP Rocket)
OPcacheOpcode-кеш · выполнение PHP
Объектный кешДанные, которые остаются после запроса (Redis)

Все области, где применяется кеш, собраны в статье Кеш: определение и все области, где используется кеширование — там это разобрано подробно; четыре направления оптимизации производительности, включая кеширование, описаны в статье Оптимизация производительности сайта: структура и определение — там это разобрано подробно.

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

🧭 Симулятор уровней кешаНаглядный симулятор
🗂️ Кеши, через которые проходит запрос WordPress
🧰 Тип запроса
Кеш браузера
HTTP-кеш, который хранится в браузере посетителя. Выберите [Изображения · CSS] и нажмите [First visit] → [Visit again]: со второго раза запрос на сервер уже не уходит.
Заголовки HTTP-кеширования
Правила, по которым сервер сообщает браузеру и CDN, как долго хранить копию. Строки заголовков в журнале ответов — реальные значения, полученные с сервера Nginx + Apache.
Кеш CDN · прокси
Копия, общая для многих посетителей. Включите [Use CDN] и нажмите [First visit] → [Visit again]: ответ завершится на edge-сервере.
Кеш страниц
Сохраняет HTML, созданный PHP, в виде файла. Нажмите [Visit again] — запрос не дойдёт до PHP и базы данных.
OPcache
Хранит скомпилированный байт-код PHP в памяти. В [Visit after editing the post] PHP выполняется снова, но компиляция пропускается.
Объектный кеш
Сохраняет результаты запросов в Redis. В [Visit after editing the post] из MariaDB заново читаются только изменённые данные записи.
Общая схема
Запрос идёт сверху вниз и останавливается на первом уровне, где есть копия.
УровеньГде хранитсяЧто хранитПример для Nginx + Apache
Кеш браузераУстройство посетителяHTML·CSS·JS·изображения·шрифтыCSS·изображения 7 дней
Кеш CDN·проксиПеред сервером (edge·обратный прокси)Копии страниц и статических файловBunny CDN
Кеш страницДиск и память сервераHTML, созданный PHPWP Rocket + nginx
OPcacheПамять сервераБайт-код PHPPHP 8.3, JIT выключен
Объектный кешПамять сервераРезультаты запросов и объектыRedis
Наглядный симулятор, который работает только в браузере. Строки заголовков в журнале ответов получены 10 октября 2026 года с сервера Nginx + Apache, а значения в скобках, например ETag после правки, — примеры.

Ⅱ. Кеш сайта

Кеш сайта — это кеш, в котором браузер посетителя и CDN или прокси сохраняют копию так, как сервер указал в заголовках ответа. Типичные заголовки — [Cache-Control]·[ETag]·[Expires], а когда срок хранения истекает, условный запрос ([304 Not Modified]) проверяет, изменилось ли что-нибудь.

1️⃣ Кеш браузера

Кеш браузера — это HTTP-кеш в веб-браузере посетителя. Он хранит HTML·CSS·JavaScript·изображения·шрифты, и при повторном запросе того же ресурса браузер либо вообще не обращается к серверу, либо только проверяет, не изменился ли он.

Срок хранения задаёт сервер, а не посетитель. Сервер Nginx + Apache ниже велит хранить CSS и изображения 7 дней, а HTML-страницы отдаёт без срока, чтобы при каждом новом посещении их проверяли.

📨 Заголовки ответа: замерКонфигурация Nginx + Apache · 2026-10-10
💻 Компьютер посетителяКеш браузера
──────▶① Первый запросGET /style.css
🖥️ Сервер сайтаNginx + Apache
💻 Компьютер посетителяКеш браузера
◀──────② Файл + указания по хранениюcache-control: max-age=604800
🖥️ Сервер сайтаNginx + Apache
③ Браузер хранит файл 7 дней, как указано, и при повторных посещениях в этот срок не отправляет запросов на сервер.
💻 Компьютер посетителяКеш браузера
──────▶④ Проверка после истечения срокаIf-None-Match: "6ab12775-2ee8"
🖥️ Сервер сайтаNginx + Apache
💻 Компьютер посетителяКеш браузера
◀──────⑤ Без измененийHTTP/2 304 (без тела)
🖥️ Сервер сайтаNginx + Apache
🖼️ CSS · изображения
cache-control: max-age=604800
expires: Sat, 17 Oct 2026 03:21:00 GMT
etag: "6ab12775-2ee8"
Браузер 7 дней использует сохранённую копию, не обращаясь к серверу повторно.
📄 HTML-страница
etag: "6ac9298c-95575"
last-modified: Fri, 09 Oct 2026 17:51:08 GMT
Срок хранения не указан, поэтому при повторном посещении браузер сначала спрашивает по ETag, не изменилось ли что-то.
При повторном запросе с тем же ETag сервер возвращает только [HTTP/2 304] без тела, а браузер продолжает использовать сохранённую копию.

2️⃣ Кеш CDN · прокси

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

Типичный обратный прокси — Varnish Cache, а CDN вроде Bunny CDN и Akamai устроены так же. С гео-DNS посетители из региона исходного сервера подключаются прямо к нему, а посетителям из других регионов отвечает ближайший edge-сервер CDN (например, Bunny CDN), который хранит даже HTML.

👤 Посетитель из региона исходного сервераDNS отдаёт адрес исходного сервера
→
🖥️ Исходный серверОтвечает напрямую, без CDN.
👤 Посетитель из другого регионаDNS отдаёт адрес ближайшего edge-сервера
→
☁️ Edge-сервер Bunny CDNЕсли есть копия HTML или файла, отвечает отсюда.
→
🖥️ Исходный серверСюда запрос идёт, только если на edge-сервере нет копии.

Устройство и преимущества CDN описаны в статье Что такое CDN? Зачем он нужен и 5 преимуществ — там это разобрано подробно.

Ⅲ. Внутренний кеш сервера

Внутренний кеш сервера подключается к процессу, в котором WordPress собирает страницу после того, как запрос дошёл до исходного сервера. Сервер на Nginx + Apache обрабатывает запрос в порядке ниже, и если на раннем шаге находится копия, последующие шаги пропускаются.

🅐 Когда в кеше страниц есть файлБольшинство запросов страниц от незалогиненных посетителей
① nginx принимает запросВеб-сервер принимает запрос, пришедший на исходный сервер.
↓
1️⃣ Кеш страниц ↓② Ответ файлом из кеша страницnginx отдаёт HTML-файл, созданный WP Rocket, как есть.x-rocket-nginx-serving-file: HIT
Всё заканчивается без PHP · OPcache · Redis · MariaDB.
🅑 Когда в кеше страниц нет файлаПервое посещение после очистки кеша · страница входа · AJAX-запросы
① nginx принимает запросФайла нет, поэтому запрос передаётся Apache.
↓
2️⃣ OPcache ↓② Выполнение PHP · OPcacheВыполняет PHP-файлы WordPress как скомпилированный байт-код.
↓
3️⃣ Объектный кеш ↓③ Объектный кеш (Redis)Сохранённые результаты запросов и объекты берутся из Redis.
↓
④ MariaDBЗапрашиваются только данные, которых нет в Redis, а часто используемые читаются из буферного пула InnoDB (памяти).
↓
⑤ Ответ · сохранение в кеш страницГотовый HTML отправляется, а WP Rocket сохраняет его в файл, поэтому следующий запрос обрабатывается по схеме 🅐.
Для конфигурации Nginx + Apache (запрос передаётся Apache и PHP, только если нет файла в кеше страниц), проверено 2026-10-10.

Конфигурацию Nginx + Apache можно выбрать как опцию в Cloudways и ScalaHosting. В Cloudways для каждого приложения выбирается Hybrid Stack (Nginx + Apache) или Lightning Stack (только Nginx), а в ScalaHosting в SPanel можно включить настройку, которая ставит Nginx перед Apache.

🖥️ Хостинги, где можно выбрать Nginx + Apache
CloudwaysВыбор стека для каждого приложения
Hybrid StackNginx + Apache
Lightning StackТолько Nginx
Cloudways →
ScalaHostingНастройки веб-сервера в SPanel
По умолчаниюApache
Включить NginxNginx + Apache
ScalaHosting →
КешЧто хранитКогда сохраняется
1️⃣ Кеш страницГотовая HTML-страница🅑 ⑤ WP Rocket сохраняет в файл при ответе
2️⃣ OPcacheСкомпилированный PHP-код (байт-код)🅑 ② При первом запуске PHP-файла
3️⃣ Объектный кешФрагменты данных: результаты запросов, опции🅑 ③ Когда WordPress впервые получает данные

1️⃣ Кеш страниц

  • ↪️ Полностраничный кеш или HTML-кеш

Кеш страниц ещё называют полностраничным кешем (full-page cache), а поскольку он хранит HTML — иногда HTML-кешем. Вся веб-страница, созданная PHP, сохраняется как статический HTML-файл и отдаётся на запросы той же страницы без запуска PHP. Это случай 🅐 в порядке обработки выше.

Хранится он в памяти сервера (RAM) или на диске (HDD/SSD): память быстрая, но дорогая и ограниченная по объёму, а диск вместительный, но сравнительно медленный.

ТипПримерКак хранит и отвечает
Плагин кешированияWP Rocket · WP Super Cache · W3 Total Cache · Cache EnablerWordPress сохраняет страницу в 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 & рекомендуемые материалы

Отвечает старая копия, оставшаяся в кеше страниц или в CDN. Очистите кеш этой записи в плагине кеширования, а если используете CDN — очистите и копию в CDN.

Плагины кеша страниц вроде WP Rocket по умолчанию не отдают сохранённые страницы вошедшим пользователям. Админка и страницы в режиме входа каждый раз собираются PHP заново, и скорость тогда поддерживают OPcache и объектный кеш.

В Chrome нажмите [Ctrl+Shift+R] ([Cmd+Shift+R] на Mac), чтобы перезагрузить текущую страницу без кеша. Чтобы очистить весь сохранённый кеш, откройте [Ещё] в правом верхнем углу → [Удалить данные о работе в браузере] и выберите [Изображения и другие файлы, сохраненные в кеше].

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

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

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

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

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