1. Что такое объектный кэш?
Когда сайт WordPress загружает страницу, он обращается к базе данных: получает посты, настройки, метаданные. Эти запросы могут занимать время и нагружать сервер.
Чтобы ускорить работу, используется объектный кэш (Object Cache). Он сохраняет результаты запросов в памяти и повторно использует их, не делая лишних SQL-запросов.
- Встроенный объектный кэш WordPress работает только в рамках одного запроса: данные хранятся до конца генерации страницы и потом очищаются.
- Чтобы данные сохранялись между запросами, нужен постоянный (persistent) объектный кэш, чаще всего с помощью Redis или Memcached.
2. Зачем нужен объектный кэш?
Для обычных пользователей и владельцев сайтов
- Сайт работает быстрее.
- Сервер выдерживает больше посетителей.
- Админка открывается быстрее (особенно на больших сайтах).
Для разработчиков и администраторов
- Экономия SQL-запросов, более предсказуемая нагрузка.
- Возможность тонкой настройки TTL (время жизни кэша) и групп.
- Удобная интеграция с Redis/Memcached для масштабируемых проектов.
3. Виды кэша в WordPress
Чтобы не путаться:
- Кэш страниц (Page Cache) – сохраняет готовые HTML-страницы.
- Кэш объектов (Object Cache) – сохраняет данные из базы (посты, опции, мета).
- Кэш браузера/CDN – сохраняет статические файлы (JS, CSS, картинки).
Эти методы можно использовать вместе, они дополняют друг друга.
4. Как включить объектный кэш?
Встроенный (непостоянный)
Ничего делать не нужно – WordPress сам использует WP_Object_Cache внутри запроса.
Постоянный объектный кэш (Redis или Memcached)
Вариант 1. Через Redis
- Установить Redis на сервер (или включить его у хостера).
- Установить расширение PHP Redis (PhpRedis или Predis).
- Установить и активировать плагин «Redis Object Cache».
- В админке нажать «Enable Object Cache».
Вариант 2. Через Memcached
- Установить расширение PHP Memcached.
- Установить плагин, поддерживающий Memcached (например, W3 Total Cache).
- Включить «Object Cache» и выбрать Memcached как backend.
5. Примеры использования (для разработчиков)
Кэширование выборки из базы
function get_my_data() {
global $wpdb;
$key = 'my_cache_key';
// Проверяем кэш
$cached = wp_cache_get($key);
if ($cached !== false) {
return $cached;
}
// Если в кэше нет — делаем запрос
$data = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_status = 'publish'");
// Сохраняем в кэш
wp_cache_set($key, $data, '', 3600); // 3600 секунд = 1 час
return $data;
}
Проверка наличия внешнего кэша
if (wp_using_ext_object_cache()) {
wp_cache_set('key', 'value');
}
6. Подводные камни и советы
- autoload в
wp_options– если слишком много данных в автозагрузке, кэш может переполняться и вызывать ошибки. - Redis vs Memcached – Redis даёт больше возможностей (TTL, списки, статистика), Memcached проще и быстрее в простых случаях.
- Кэш нужно очищать при изменении данных (например, после обновления записи). Большинство плагинов делают это автоматически.
- Не путать объектный кэш с кэшем страниц – они решают разные задачи и хорошо работают вместе.
7. Актуальные плагины объектного кэширования
- Redis Object Cache
- W3 Total Cache (поддержка Redis и Memcached)
- LiteSpeed Cache (Redis/Memcached + другие виды кеша)
- Memcached Object Cache
8. Резюме
- В WordPress встроен объектный кэш, но он работает только в пределах запроса.
- Чтобы ускорить сайт и снизить нагрузку, нужен постоянный объектный кэш через Redis или Memcached.
- Для новичка достаточно установить плагин (Redis Object Cache или W3 Total Cache).
- Для разработчиков — возможности ручного управления (
wp_cache_*), TTL и оптимизации структуры хранения данных.