Memcached WordPress: настройка объектного кэша и ускорение сайта в 7 шагов
Почему Memcached важен для WordPress
WordPress генерирует HTML‑страницы в реальном времени, обращаясь к базе данных при каждом запросе. При росте трафика это приводит к высокому CPU и замедлению отклика. Memcached – распределенный кеш в памяти, который хранит результаты запросов, сокращая обращения к MySQL до нуля.
Подготовка сервера: установка Memcached
Перед тем как подключать кеш к WordPress, необходимо установить сам сервис и PHP‑расширение.
- Обновите репозитории и установите
memcached:sudo apt-get update && sudo apt-get install memcached libmemcached-tools - Проверьте статус сервиса:
systemctl status memcached - Установите PHP‑модуль (пример для PHP 8.1):
sudo apt-get install php8.1-memcached - Перезапустите PHP‑FPM/Apache:
systemctl restart php8.1-fpm # или apache2
После перезапуска выполните php -m | grep memcached – модуль должен появиться в списке.
Настройка объектного кэша в WordPress
WordPress поддерживает объектный кэш через WP_Object_Cache. Для работы с Memcached необходимо добавить файл object-cache.php в корень wp-content. Самый простой способ – использовать готовый плагин.
Вариант 1: Плагин Memcached Object Cache
- Установите и активируйте плагин через админку.
- В настройках укажите хост
127.0.0.1, порт11211и опциональный префикс. - Сохраните изменения – плагин автоматически создаст
object-cache.php.
Вариант 2: Ручная интеграция
Если хотите полностью контролировать код, скачайте wp-memcached-object-cache и разместите файлы в wp-content:
// wp-content/object-cache.php
if ( ! defined( 'ABSPATH' ) ) {
exit; // Защита от прямого доступа
}
$memcached = new Memcached();
$memcached->addServer( '127.0.0.1', 11211 );
class WP_Memcached_Object_Cache {
private $mc;
public function __construct( $mc ) { $this->mc = $mc; }
public function get( $key, $group = 'default' ) {
return $this->mc->get( $this->id( $key, $group ) );
}
public function set( $key, $data, $group = 'default', $expire = 0 ) {
return $this->mc->set( $this->id( $key, $group ), $data, $expire );
}
// … остальные методы (delete, replace, flush) …
private function id( $key, $group ) {
return $group . ':' . $key;
}
}
global $wp_object_cache;
$wp_object_cache = new WP_Memcached_Object_Cache( $memcached );
После загрузки файлов очистите кеш WordPress: wp cache flush.
Тестирование производительности
Чтобы убедиться, что кэш действительно ускорил сайт, проведём сравнение до и после включения Memcached.
Инструменты
- GTmetrix – измеряет время загрузки и количество запросов к БД.
- Плагин Query Monitor – показывает количество запросов MySQL в реальном времени.
Сценарий теста
- Отключите объектный кэш (плагин → деактивировать). Снимите скриншот «Queries» в Query Monitor – обычно 30‑50 запросов на главную страницу.
- Включите Memcached, очистите кеш и снова откройте страницу. Запросов должно стать менее 5, а время «Time to First Byte» сократится от 800 мс до 250‑300 мс.
Для более точных цифр запустите тест 10 раз и возьмите среднее. В большинстве реальных проектов наблюдается ускорение от 30 % до 65 %.
Советы по оптимизации и типичные ошибки
- Не храните большие объекты. Memcached ограничен 1 МБ на запись; попытка кешировать большие массивы приводит к ошибкам.
- Настройте TTL. Установите время жизни (TTL) 300‑600 секунд, чтобы данные обновлялись регулярно.
- Проверяйте доступность сервера. Если Memcached падает, WordPress автоматически переключится на «no‑cache», но в логах появятся ошибки.
- Комбинируйте с CDN. Для полной скорости используйте CDN‑решения – они обслуживают статический контент, а Memcached ускоряет динамический.
Полезные ресурсы
Если хотите углубиться в инфраструктуру, обратите внимание на статьи:
- Как правильно выбрать VPS для WordPress – правильный сервер гарантирует стабильную работу Memcached.
- Docker + WordPress: гайд разработки – в контейнере удобно запускать отдельный Memcached‑инстанс.
Следуя этим рекомендациям, вы получите быстрый, масштабируемый и надёжный сайт на WordPress.
❓ Часто задаваемые вопросы
Как проверить, что WordPress действительно использует Memcached?
Установите плагин Query Monitor и посмотрите в разделе «Object Cache». Если в логах появляются запросы к Memcached (memcached_get, memcached_set), кеш работает.
Можно ли использовать Memcached на совместном хостинге?
Да, если провайдер предоставляет доступ к Memcached‑серверу. Обычно требуется указать внешний хост и порт в настройках плагина.
Что делать, если объектный кеш не очищается после обновления записи?
Вызовите функцию wp_cache_flush() в коде темы/плагина или используйте кнопку «Очистить кеш» в плагине Memcached Object Cache.
Как одновременно использовать Memcached и Redis?
WordPress поддерживает только один объектный кеш. Можно использовать Memcached для кэша запросов, а Redis – для сессий и очередей, но включать их нужно в разных ролях.