Как настроить кэширование в WordPress для ускорения сайта

Ускорение загрузки сайта — одна из ключевых задач для любого владельца WordPress-сайта. Одним из самых эффективных способов оптимизации скорости является правильная настройка кэширования. В этой статье мы подробно разберём, что такое кэширование, какие виды кэширования существуют, а также как правильно их настроить на практике с примерами кода и рекомендациями по плагинам.

Что такое кэширование и зачем оно нужно в WordPress

Кэширование — это процесс сохранения данных в быстром доступе (кэше), чтобы при повторном запросе не выполнять тяжёлые операции заново. В контексте WordPress это позволяет значительно снизить нагрузку на сервер и ускорить отдачу страниц пользователю.

Без кэширования при каждом запросе к серверу WordPress заново формирует страницу, обращаясь к базе данных, выполняя PHP-код и подключая различные ресурсы. Кэширование позволяет хранить готовую HTML-страницу или её части, что экономит ресурсы и снижает время ожидания.

Основные виды кэширования в WordPress:

  • Кэш страниц (Page Cache) — хранит готовую HTML-страницу целиком.
  • Объектный кэш (Object Cache) — кэширует результаты запросов к базе данных и другие объекты PHP.
  • Кэш браузера (Browser Cache) — хранит статические файлы (CSS, JS, изображения) на стороне пользователя.
  • Кэш фрагментов (Fragment Cache) — кэширует части страниц, например, виджеты или блоки.

Популярные плагины для кэширования в WordPress

Существует множество плагинов для кэширования, которые автоматизируют процесс и предоставляют удобный интерфейс:

  • WP Super Cache — простой в настройке плагин с поддержкой кэширования страниц.
  • W3 Total Cache — мощный плагин с комплексными настройками кэширования и оптимизации.
  • WP Rocket — коммерческий плагин с простым интерфейсом и продвинутыми возможностями.
  • LiteSpeed Cache — отлично подходит для сайтов на LiteSpeed-серверах.

Для примера рассмотрим настройку WP Rocket — плагина, который многие считают лучшим для кэширования. Он автоматически активирует page cache, сжатие файлов, lazy load и многое другое.

Объектный кэш: зачем и как его использовать

Объектный кэш хранит результаты запросов к базе данных в памяти, что ускоряет повторные вызовы. По умолчанию WordPress использует файловый объектный кэш, но он работает только в течение одного запроса. Для долгосрочного кэширования используют внешние хранилища — Memcached или Redis.

Для интеграции Redis с WordPress можно использовать плагин Clearfy Pro или отдельные плагины Redis Object Cache.

Пример подключения Redis Object Cache без плагина — добавьте в wp-config.php:

define('WP_CACHE', true);

// Подключение Redis Object Cache
require_once dirname(__FILE__) . '/redis-cache.php';

Файл redis-cache.php — это клиентская библиотека для работы с Redis, которую нужно скачать отдельно или использовать плагин.

Пример кода для кэширования фрагментов

Иногда полезно закэшировать отдельные части страницы, например, виджет с популярными постами. Ниже пример функции с использованием transient API:

function wpbloger_get_popular_posts() {
    $cache_key = 'wpbloger_popular_posts';
    $popular_posts = get_transient($cache_key);

    if (false === $popular_posts) {
        $query = new WP_Query([
            'posts_per_page' => 5,
            'orderby' => 'comment_count',
            'order' => 'DESC',
        ]);

        $popular_posts = '';
        if ($query->have_posts()) {
            $popular_posts .= '<ul>';
            while ($query->have_posts()) {
                $query->the_post();
                $popular_posts .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
            }
            $popular_posts .= '</ul>';
        }
        wp_reset_postdata();

        set_transient($cache_key, $popular_posts, HOUR_IN_SECONDS);
    }

    return $popular_posts;
}

Вызовите эту функцию в шаблоне там, где хотите вывести список популярных постов. Кэш будет сбрасываться каждый час.

Кэш браузера: настройка через .htaccess и плагины

Кэш браузера позволяет хранить статические ресурсы на стороне клиента, чтобы повторно не загружать их с сервера. Для настройки можно добавлять правила в .htaccess (для Apache):

<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>

Также многие кэш-плагины (WP Rocket, W3 Total Cache) автоматически настраивают заголовки кэширования для браузеров.

Практические советы по настройке кэширования для wp-bloger.ru

1. Используйте плагин WP Rocket для комплексной настройки кэширования и оптимизации. Он прост в использовании и даёт хороший прирост скорости.

2. Для хостинга с поддержкой Redis настройте объектный кэш Redis с помощью плагина Clearfy Pro, который упрощает интеграцию.

3. Кэшируйте фрагменты с помощью transient API для нестандартных блоков, например, виджетов.

4. Настройте кэш браузера через .htaccess или плагины, чтобы статические ресурсы грузились быстрее.

5. Обязательно периодически очищайте кэш (WP Rocket позволяет настроить автоматическую очистку при обновлении контента).

Код для включения кэширования страниц вручную

Если хотите реализовать простое кэширование страниц без плагинов, можно использовать следующий код в functions.php темы:

function wpbloger_page_cache_start() {
    if (is_user_logged_in()) return; // Не кэшируем для авторизованных
    $cache_file = WP_CONTENT_DIR . '/cache/pages/' . md5($_SERVER['REQUEST_URI']) . '.html';

    if (file_exists($cache_file) && (time() - filemtime($cache_file) < 3600)) {
        echo file_get_contents($cache_file);
        exit;
    }

    ob_start();
}

function wpbloger_page_cache_end() {
    if (is_user_logged_in()) return;
    $cache_dir = WP_CONTENT_DIR . '/cache/pages/';
    if (!file_exists($cache_dir)) {
        mkdir($cache_dir, 0755, true);
    }
    $cache_file = $cache_dir . md5($_SERVER['REQUEST_URI']) . '.html';
    file_put_contents($cache_file, ob_get_contents());
    ob_end_flush();
}

add_action('template_redirect', 'wpbloger_page_cache_start', 0);
add_action('shutdown', 'wpbloger_page_cache_end');

Этот код создаёт простое файловое кэширование страниц для неавторизованных пользователей с временем жизни 1 час. Подходит для небольших сайтов без сложных динамических элементов.

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как удалить или изменить метаданные медиафайлов в WordPress без плагинов
04.01.2026
Как быстро удалить старые вариации продуктов в WooCommerce без плагинов
09.05.2026
Как быстро удалить старые вариации продуктов WooCommerce без плагинов
27.06.2026
Как изменить фильтр записей в WordPress по автору и категории
13.12.2025
Как автоматически удалять старые медиафайлы в WordPress: практическое руководство
11.04.2026
×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙