Перейти к содержимому

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

Для выдачи одной страницы WordPress проделывает много работы: несколько запросов в базу за последними записями, настройками виджетов и темы, активными плагинами, названием сайта, фоном и десятками других данных.

Кэширование страниц (page cache) сохраняет результат целиком. При повторном запросе по тому же адресу отдаётся готовая страница из кэша — быстрее и с минимальной нагрузкой на сервер. При изменении записи кэш сбрасывается и пересоздаётся с новыми данными.

В ядре WordPress страничный кэш не реализован — но есть все необходимые хуки для реализации на уровне плагинов. Для 80% сайтов статического страничного кэша достаточно, чтобы всё работало быстро.

ПлагинХранилищеАрхитектураМультисерверностьИнтерфейсДля кого
WP Super CacheФайловая системаСтатические HTML, может отдавать напрямую через Apache/nginx в обход PHPСложно (файлы локальны)АдминкаНовички и опытные
W3 Total CacheДиск или памятьНе сохраняет структуру для отдачи без PHP, зато работает с внешними хранилищамиДаАдминка, очень много настроекОпытные
BatcacheВнешний object cache (Memcached)Страницы в объектном кэшеДаТолько PHP-конфиг, без админкиПрофессионалы
SurgeФайловая системаDrop-in advanced-cache.php, zero-configСложноНет настроек, WP-CLIРазработчики
WP RocketФайловая системаPage cache + оптимизация фронтендаСложноАдминка, максимум автоматикиВсе, платно

WP Super Cache — самый популярный и один из старейших плагинов страничного кэша. Создаёт статические HTML-файлы, а при правильной конфигурации веб-сервер (Apache или nginx) отдаёт их напрямую, вообще минуя PHP.

Дополнительно: настройка CDN, поддержка мобильной версии. Подходит и новичкам, и опытным пользователям. Ограничение: файловое хранилище крайне сложно синхронизировать между двумя и более веб-серверами.

W3 Total Cache — многоуровневый комбайн: страницы, запросы к базе, объекты, браузерный кэш, сжатие скриптов и стилей, CDN. Хранит кэш и на диске, и в памяти (Memcached, Redis).

Ключевое отличие от WP Super Cache: не сохраняет структуру статических файлов, поэтому отдача без PHP невозможна — зато внешние хранилища позволяют легко работать в многосерверной архитектуре. Из-за огромного количества настроек рекомендуется опытным пользователям.

Batcache — плагин от Automattic с единственной функцией: кэширование страниц, но безупречное. Использует внешнее кэширование объектов (Memcached) для хранения страниц, поэтому легко масштабируется на многосерверную архитектуру.

Исторически Batcache был основой кэширования сети WordPress.com: более 40 млн сайтов, 2000+ серверов, миллиарды просмотров страниц в месяц. У плагина нет даже страницы настроек — вся конфигурация в PHP-файле. Сегодня развивается слабо, но остаётся рабочим вариантом для highload-проектов с Memcached. Только для профессиональных разработчиков.

Surge — современный zero-config плагин от Konstantin Kovshenin: статические HTML на диске, автоинвалидация, управление через WP-CLI. В тестах держит 1000–2500 RPS на одноядерном VPS с 1 ГБ RAM. Подробный разбор: Surge: статический кэш без настроек.

WP Rocket — премиум-плагин, считается одним из самых эффективных решений. Помимо страничного кэша: минификация, lazy load, preload, оптимизация БД, CDN. Подходит и новичкам за счёт автоматических настроек, и профессионалам за счёт гибкости.

Зависит от размера сайта, возможностей хостинга и опыта:

  • Начинаете с нуля → WP Super Cache (бесплатно, просто) или WP Rocket (платно, максимум из коробки).
  • Нужна тонкая настройка и внешние хранилища → W3 Total Cache.
  • VPS, инфраструктура как код, WP-CLI → Surge.
  • Мультисерверный highload с Memcached → Batcache.
  • Магазин WooCommerce → см. Кэширование в WooCommerce — динамические страницы (корзина, чекаут, кабинет) исключаются из кэша.

Статический кэш страниц может комбинироваться с динамическими методами: часть контента отдаётся статикой, часть рендерится на клиенте (CSR), часть на сервере (SSR). Гибридные схемы — сложная инженерная тема уровня highload-архитектуры: нужно чётко понимать, что кэшируется где и как инвалидируется. Для большинства проектов достаточно простого страничного кэша + исключений для динамических страниц.