| title | Кэширование WordPress |
|---|---|
| description | Виды кэширования в WordPress: плагины, браузерный кэш, объектный кэш и серверный кэш — как выбрать и настроить. |
Кэширование — самый быстрый способ ускорить WordPress. Для немедленного эффекта установите W3 Total Cache, WP Super Cache или Cache Enabler.
Подробнее об общих принципах оптимизации — Оптимизация WordPress.
Плагины кэширования сохраняют посты и страницы как статические файлы и отдают их посетителям вместо повторной генерации PHP. Это снижает нагрузку на сервер в десятки и сотни раз — особенно для страниц с редкими изменениями.
В связке с системным кэшем уровня Varnish эффективность многократно возрастает.
Популярные плагины:
Если на сайте много динамического контента, настройка кэширования сложнее. Ищите по запросу «WordPress cache plugin» актуальные решения.
Браузерный кэш снижает количество запросов к серверу за счёт хранения статических файлов (изображения, CSS, JS) на компьютере посетителя.
Механизм работы:
- Сервер отправляет заголовки
Cache-Control(особенноmax-age) иExpires - Браузер проверяет Entity Tags (ETag) вместо повторной загрузки
- Сервер отвечает
304 Not Modifiedвместо200 OKс телом файла
Результат — меньше трафика и быстрее загрузка при повторных визитах.
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>Объектное кэширование — перенос данных из медленного и дорогого хранилища в быстрое и дешёвое. В отличие от кэша страниц, объектный кэш обычно персистентный: данные, закэшированные при одном запросе, доступны при следующем.
Ключевое свойство: закэшированные данные всегда должны быть восстанавливаемыми. При повреждении кэша приложение продолжает работать — данные регенерируются автоматически, хотя и с временным падением производительности.
Движки объектного кэша:
| Движок | Тип | Особенности |
|---|---|---|
| Redis | In-memory | Самый популярный, богатая структура данных |
| Memcached | In-memory | Простой, проверенный временем |
| APC/u | In-memory | Локальный для одного сервера |
| Файловая система | Disk-based | Не требует доп. сервисов |
Выбор движка зависит от задачи. Минимальное требование — доступ к закэшированным данным должен быть быстрее, чем их повторная генерация.
WordPress имеет встроенный API объектного кэша через класс WP_Object_Cache. Для подключения внешнего движка (Redis, Memcached) используйте drop-in плагин object-cache.php в wp-content/.
// Базовое использование WP Object Cache API
wp_cache_set('my_key', $data, 'my_group', 3600);
$data = wp_cache_get('my_key', 'my_group');
wp_cache_delete('my_key', 'my_group');Серверный кэш сложнее плагинного, но необходим для высоконагруженных сайтов.
Уровни серверного кэширования:
Ускоряет выполнение PHP, сохраняя скомпилированный байт-код в памяти:
Обратный прокси-сервер перед веб-сервером WordPress:
- Varnish — мощный HTTP-акселератор, отлично сочетается с плагинами кэширования (W3TC, WP Super Cache)
- Nginx FastCGI Cache — кэширование на уровне веб-сервера без дополнительного ПО
Пользователь → CDN → Varnish (reverse proxy) → Nginx/Apache (opcode cache) → WordPress (object cache: Redis) → MySQL
| Уровень сайта | Рекомендация |
|---|---|
| Блог на shared-хостинге | Плагин кэширования + браузерный кэш |
| Средний сайт на VPS | Плагин + OPcache + объектный кэш (Redis) |
| Высоконагруженный проект | Varnish/Nginx FastCGI + Redis + CDN + OPcache |
WooCommerce требует особой настройки кэширования — корзина, чекаут и личный кабинет должны оставаться динамическими.
Подробнее: Кэширование в WooCommerce.
- Core Caching Concepts in WordPress
- Best Practices for Speeding Up Your Web Site — Yahoo! Developer Network
- Use Server Cache Control to Improve Performance
- Оптимизация WordPress — общий обзор факторов производительности
- PHP-оптимизация — настройка PHP для WordPress
Источник: WordPress Developer Handbook — Cache