Загрузка...

Объектный кэш в WordPress и внешнее кеширование

wordpress

1. Что такое объектный кэш?

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

Чтобы ускорить работу, используется объектный кэш (Object Cache). Он сохраняет результаты запросов в памяти и повторно использует их, не делая лишних SQL-запросов.

  • Встроенный объектный кэш WordPress работает только в рамках одного запроса: данные хранятся до конца генерации страницы и потом очищаются.
  • Чтобы данные сохранялись между запросами, нужен постоянный (persistent) объектный кэш, чаще всего с помощью Redis или Memcached.

2. Зачем нужен объектный кэш?

Для обычных пользователей и владельцев сайтов

  • Сайт работает быстрее.
  • Сервер выдерживает больше посетителей.
  • Админка открывается быстрее (особенно на больших сайтах).

Для разработчиков и администраторов

  • Экономия SQL-запросов, более предсказуемая нагрузка.
  • Возможность тонкой настройки TTL (время жизни кэша) и групп.
  • Удобная интеграция с Redis/Memcached для масштабируемых проектов.

3. Виды кэша в WordPress

Чтобы не путаться:

  1. Кэш страниц (Page Cache) – сохраняет готовые HTML-страницы.
  2. Кэш объектов (Object Cache) – сохраняет данные из базы (посты, опции, мета).
  3. Кэш браузера/CDN – сохраняет статические файлы (JS, CSS, картинки).

Эти методы можно использовать вместе, они дополняют друг друга.


4. Как включить объектный кэш?

Встроенный (непостоянный)

Ничего делать не нужно – WordPress сам использует WP_Object_Cache внутри запроса.

Постоянный объектный кэш (Redis или Memcached)

Вариант 1. Через Redis

  1. Установить Redis на сервер (или включить его у хостера).
  2. Установить расширение PHP Redis (PhpRedis или Predis).
  3. Установить и активировать плагин «Redis Object Cache».
  4. В админке нажать «Enable Object Cache».

Вариант 2. Через Memcached

  1. Установить расширение PHP Memcached.
  2. Установить плагин, поддерживающий Memcached (например, W3 Total Cache).
  3. Включить «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. Актуальные плагины объектного кэширования


8. Резюме

  • В WordPress встроен объектный кэш, но он работает только в пределах запроса.
  • Чтобы ускорить сайт и снизить нагрузку, нужен постоянный объектный кэш через Redis или Memcached.
  • Для новичка достаточно установить плагин (Redis Object Cache или W3 Total Cache).
  • Для разработчиков — возможности ручного управления (wp_cache_*), TTL и оптимизации структуры хранения данных.

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

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