Ускорение WordPress/WooCommerce

Автор:vkuzyomko

Ускорение WordPress/WooCommerce

Краткий ответ: ускорение WordPress/WooCommerce — это не установка одного кеш-плагина, а комплексная диагностика сайта: хостинг, PHP, база данных, тема, плагины, изображения, AJAX, checkout, корзина, wp-admin, cron и лишние скрипты. Для WooCommerce особенно важно ускорять сайт аккуратно, чтобы не сломать корзину, оплату, доставку и оформление заказа.

Обычный WordPress-сайт можно кешировать агрессивнее. Интернет-магазин на WooCommerce требует более точной настройки: страницы товара, категории и блог можно ускорять через кеш, но корзину, checkout, личный кабинет и динамические фрагменты нужно обрабатывать осторожно.

Причина

WordPress и WooCommerce начинают работать медленно не из-за одной причины. Обычно проблема собирается из нескольких слабых мест: тяжёлая тема, много плагинов, слабый хостинг, неоптимизированная база, большие изображения, лишний JavaScript, медленный admin-ajax.php и неправильно настроенный кеш.

  • страницы товаров долго открываются из-за тяжёлых изображений и большого количества блоков;
  • каталог тормозит из-за фильтров, вариативных товаров и сложных SQL-запросов;
  • checkout зависает из-за конфликтов JavaScript, кеша, оплаты или доставки;
  • админка заказов открывается медленно из-за большого количества мета-данных;
  • cart fragments загружаются на всех страницах, даже там, где корзина не нужна;
  • cron-задачи запускаются при посещениях сайта и создают лишнюю нагрузку;
  • плагины подключают CSS и JS на каждой странице;
  • база данных хранит много ревизий, transients, логов и старых сессий WooCommerce;
  • хостинг не справляется с PHP, MySQL и одновременными запросами покупателей.

Если магазин тормозит именно на WooCommerce-страницах, полезно отдельно посмотреть материал про то, как ускорить WooCommerce. Если медленно работает вся админка, причина может быть не в магазине, а в wp-admin, cron, базе или тяжёлых плагинах — это разбирается в статье про то, почему медленно работает админка WordPress.

Диагностика

Начинать ускорение нужно с измерений. Без диагностики легко отключить не тот скрипт, поставить лишний кеш-плагин или сломать checkout. Сначала нужно понять, что именно медленное: сервер, база, фронтенд, изображения, JavaScript, AJAX или WooCommerce-логика.

Что измерять

Показатель Что означает Где искать проблему
TTFB Как быстро сервер начал отдавать страницу Хостинг, PHP, база данных, кеш, плагины
LCP Как быстро загрузился главный видимый блок страницы Изображения, тема, CSS, шрифты, первый экран
INP Как быстро сайт реагирует на действия пользователя JavaScript, плагины, тяжёлые обработчики кликов
Размер страницы Сколько файлов и данных загружается Изображения, CSS, JS, шрифты, виджеты
Количество запросов Сколько файлов браузер загружает Плагины, тема, сторонние скрипты
admin-ajax.php AJAX-запросы WordPress и WooCommerce Корзина, фильтры, формы, плагины, heartbeat

Минимальный порядок проверки

  • проверить скорость главной страницы;
  • проверить страницу категории товаров;
  • проверить карточку товара;
  • проверить корзину;
  • проверить checkout;
  • проверить личный кабинет;
  • проверить wp-admin и список заказов;
  • открыть DevTools и посмотреть Network;
  • проверить debug.log;
  • проверить медленные SQL-запросы;
  • проверить, какие плагины грузят CSS и JS на всех страницах;
  • проверить работу сайта без кеша и с кешем.

Что нельзя делать вслепую

  • включать все настройки оптимизации в одном плагине сразу;
  • кешировать корзину, checkout и личный кабинет как обычные страницы;
  • отключать WooCommerce scripts глобально без проверки;
  • удалять transients и сессии на рабочем магазине во время активных заказов;
  • объединять весь JavaScript без теста оплаты и доставки;
  • откладывать загрузку скриптов checkout без проверки тестового заказа.

Нужно быстро решить проблему на сайте?

Если не хотите рисковать сайтом и тратить время на эксперименты, можно оставить заявку. Я посмотрю задачу и предложу аккуратное решение.

Оставить заявку

Решение

Правильное ускорение WordPress/WooCommerce лучше делать слоями: сервер, PHP, база, кеш, изображения, тема, плагины, WooCommerce, админка и только потом тонкая оптимизация кода.

1. Хостинг и сервер

Если сервер слабый, кеш может скрыть проблему только для гостей. Админка, checkout, корзина, поиск, фильтры и API всё равно будут работать через PHP и MySQL.

  • использовать актуальную стабильную версию PHP, совместимую с сайтом;
  • проверить memory_limit;
  • включить OPcache на сервере;
  • проверить лимиты CPU, RAM и I/O;
  • использовать HTTPS без смешанного контента;
  • проверить скорость MySQL/MariaDB;
  • для больших магазинов рассмотреть VPS или managed WordPress/WooCommerce-хостинг.

2. Кеширование

Кеш нужен почти каждому WordPress-сайту, но для WooCommerce его нужно настроить аккуратно.

Страница Можно кешировать? Комментарий
Главная Да Если нет персональных блоков для пользователя
Блог Да Обычно кешируется безопасно
Категории товаров Да, осторожно Проверить фильтры, сортировку, наличие товаров
Карточки товаров Да, осторожно Проверить вариации, наличие, динамические цены
Корзина Нет Данные индивидуальны для пользователя
Checkout Нет Кеш может сломать оплату и оформление заказа
Личный кабинет Нет Есть персональные данные пользователя

3. Изображения

Для WooCommerce изображения часто дают самую заметную проблему на фронтенде. Особенно если в карточках товаров используются фото по несколько мегабайт.

  • использовать WebP или AVIF, если это поддерживает сайт и сервер;
  • не загружать изображения больше нужного размера;
  • создать корректные thumbnail-размеры WooCommerce;
  • включить lazy loading для изображений ниже первого экрана;
  • не применять lazy loading к главному изображению первого экрана, если оно влияет на LCP;
  • удалить неиспользуемые старые изображения после проверки.

4. Плагины и тема

Много плагинов — не всегда проблема. Проблема в том, что часть плагинов грузит скрипты, стили, запросы и API-вызовы там, где они не нужны.

  • отключить неиспользуемые плагины;
  • заменить тяжёлые плагины простыми решениями;
  • проверить, какие скрипты грузятся на главной, в каталоге и checkout;
  • не использовать несколько плагинов кеша одновременно;
  • не использовать несколько оптимизаторов изображений одновременно;
  • проверить конфликт плагинов, если после ускорения появились ошибки.

Если после оптимизации появились странные ошибки, пропали кнопки или перестал работать checkout, возможно, это не “плохой кеш”, а конфликт плагинов WordPress.

5. База данных

WooCommerce активно использует базу данных: заказы, товары, мета-поля, сессии, купоны, логи, webhooks, transients. Если магазин работает давно, база может стать тяжёлой.

  • удалить старые ревизии записей, если они не нужны;
  • очистить просроченные transients;
  • проверить таблицу wp_options и autoload-данные;
  • очистить старые WooCommerce-сессии;
  • проверить логи WooCommerce;
  • проверить индексы в кастомных таблицах;
  • не удалять данные заказов без резервной копии.

6. WooCommerce cart fragments

Скрипт cart fragments нужен для динамического обновления мини-корзины. Но на сайтах без мини-корзины в шапке он часто создаёт лишние AJAX-запросы. Отключать его глобально нельзя без проверки.

Если мини-корзина не используется на обычных страницах, cart fragments можно отключать только там, где это безопасно.

7. Cron

WP-Cron запускается при посещениях сайта. На магазинах с трафиком, импортами, рассылками и синхронизациями это может создавать лишнюю нагрузку.

  • проверить список cron-задач;
  • удалить зависшие задачи после проверки;
  • не запускать тяжёлый импорт при каждом открытии страницы;
  • для активных сайтов лучше настроить системный cron на сервере;
  • логировать ошибки интеграций и API-задач.

Код

Важно: код ниже может повлиять на работу WooCommerce-скриптов, корзины и динамических элементов. Перед использованием сделайте резервную копию и проверьте на тестовой копии сайта. Не отключайте WooCommerce-скрипты на checkout, корзине и личном кабинете.

Отключение cart fragments вне WooCommerce-страниц

Куда вставлять: в functions.php дочерней темы или в отдельный небольшой плагин. Для постоянного решения лучше использовать отдельный плагин.

<?php
if (!defined('ABSPATH')) {
    exit;
}

add_action('wp_enqueue_scripts', 'sc_disable_cart_fragments_on_non_shop_pages', 100);

function sc_disable_cart_fragments_on_non_shop_pages() {
    if (!class_exists('WooCommerce')) {
        return;
    }

    if (is_cart() || is_checkout() || is_account_page() || is_product() || is_shop() || is_product_category() || is_product_tag()) {
        return;
    }

    wp_dequeue_script('wc-cart-fragments');
    wp_deregister_script('wc-cart-fragments');
}

Подключение скрипта только на нужной странице

Частая ошибка — грузить свой JS на всём сайте. Лучше подключать файл только там, где он нужен.

<?php
if (!defined('ABSPATH')) {
    exit;
}

add_action('wp_enqueue_scripts', 'sc_load_custom_script_only_on_checkout');

function sc_load_custom_script_only_on_checkout() {
    if (!function_exists('is_checkout')) {
        return;
    }

    if (!is_checkout()) {
        return;
    }

    wp_enqueue_script(
        'sc-checkout-custom',
        get_stylesheet_directory_uri() . '/js/sc-checkout-custom.js',
        array('jquery'),
        '1.0.0',
        true
    );
}

Настройка debug.log для диагностики

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

Куда вставлять: в файл wp-config.php перед строкой /* That’s all, stop editing! */.

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Пример проверки AJAX через jQuery

Важно: пример нужен только для диагностики. Не используйте его для изменения заказов, оплаты или корзины без nonce-проверки и проверки прав пользователя.

<script>
jQuery(document).ready(function() {
    jQuery(document).on('click', '.sc-speed-test-button', function() {
        jQuery.ajax({
            url: '<?php echo admin_url("admin-ajax.php") ?>',
            type: 'POST',
            dataType: 'json',
            data: {
                action: 'sc_speed_test'
            },
            success: function(response) {
                if (response.success) {
                    jQuery('.sc-speed-test-result').html(response.data.message);
                } else {
                    jQuery('.sc-speed-test-result').html('Ошибка проверки');
                }
            }
        });
    });
});
</script>

Результат

После правильного ускорения WordPress/WooCommerce сайт должен открываться стабильнее, админка должна меньше зависать, checkout должен работать без ошибок, а сервер должен тратить меньше ресурсов на лишние запросы.

Что считается хорошим результатом

  • страницы открываются быстрее не только для гостей, но и для авторизованных пользователей;
  • каталог товаров не зависает при фильтрации;
  • корзина и checkout не кешируются неправильно;
  • оплата и доставка работают после оптимизации;
  • в wp-admin быстрее открываются товары и заказы;
  • уменьшилось количество лишних CSS и JS-файлов;
  • уменьшились тяжёлые AJAX-запросы;
  • база данных стала чище;
  • debug.log не заполняется повторяющимися ошибками;
  • Core Web Vitals стали лучше по реальным данным, а не только в тесте.

Дополнительные способы

Объектный кеш

Object Cache через Redis или Memcached может помочь сайтам с большим количеством запросов к базе. Но если база забита мусором, а плагины делают тяжёлые запросы на каждой странице, объектный кеш не решит проблему полностью.

CDN

CDN помогает быстрее отдавать статические файлы: изображения, CSS, JS, шрифты. Для локального бизнеса в одной стране эффект может быть меньше, чем для международного магазина, но CDN всё равно может снизить нагрузку на сервер.

Оптимизация шрифтов

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

Оптимизация темы

Если тема тяжёлая, содержит много слайдеров, анимаций, конструкторов и глобальных виджетов, кеш не всегда спасает. Иногда быстрее убрать лишние блоки, чем пытаться “ускорить” их плагинами.

Оптимизация WooCommerce-админки

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

WP-CLI

WP-CLI удобно использовать для технических операций: очистки transients, проверки cron, управления кешем, массовых задач и диагностики. Но команды на рабочем магазине нужно выполнять осторожно и только после бэкапа.

Частые ошибки

Установить много плагинов ускорения сразу

Два кеш-плагина, два оптимизатора изображений и несколько минификаторов могут конфликтовать. В итоге сайт становится не быстрее, а нестабильнее.

Кешировать checkout

Checkout, корзина и личный кабинет должны быть исключены из полного кеширования. Иначе пользователь может столкнуться с ошибкой оплаты, старой корзиной или некорректными данными.

Отключить все скрипты WooCommerce

Некоторые скрипты WooCommerce нужны для вариаций товара, корзины, checkout и оплаты. Их нельзя отключать без понимания, где они используются.

Оптимизировать только главную страницу

Для магазина важны карточки товаров, категории, корзина, checkout и wp-admin. Быстрая главная страница не означает, что магазин работает быстро.

Игнорировать базу данных

Если база перегружена autoload-данными, старыми логами, сессиями и мусором, фронтенд и админка будут тормозить даже с кешем.

Не проверять мобильную версию

На мобильных устройствах слабее процессор и сеть. Скрипты, которые почти незаметны на компьютере, могут сильно ухудшать INP на телефоне.

Не делать тестовый заказ после оптимизации

После любых правок кеша, JS, checkout, доставки или оплаты нужно сделать тестовый заказ. Иначе можно не заметить, что магазин перестал принимать покупки.

Диагностика проблем

Проблема: сайт быстрый для гостей, но медленный для администратора

  • проверить wp-admin;
  • проверить Heartbeat API;
  • проверить плагины аналитики и отчётов;
  • проверить количество заказов и мета-данных;
  • проверить debug.log;
  • проверить серверные лимиты;
  • проверить cron-задачи.

Проблема: checkout перестал работать после оптимизации

  • отключить минификацию JavaScript для checkout;
  • исключить checkout из кеша;
  • проверить консоль браузера;
  • проверить Network и ответы wc-ajax;
  • проверить плагин оплаты;
  • проверить конфликт с оптимизатором скриптов;
  • сделать тестовый заказ без кеша.

Проблема: корзина показывает старые данные

  • проверить исключения кеша для cart;
  • проверить WooCommerce sessions;
  • проверить cart fragments;
  • проверить кеш CDN;
  • проверить, не кешируется ли HTML блока мини-корзины;
  • проверить работу для авторизованного и неавторизованного пользователя.

Проблема: PageSpeed показывает плохой LCP

  • проверить главное изображение первого экрана;
  • не применять lazy loading к LCP-изображению;
  • сжать изображение и отдать его в правильном размере;
  • убрать тяжёлый слайдер с первого экрана;
  • проверить CSS, который блокирует отрисовку;
  • проверить шрифты.

Проблема: высокий TTFB

  • проверить хостинг и лимиты сервера;
  • включить серверный кеш, если он доступен;
  • проверить медленные плагины;
  • проверить SQL-запросы;
  • проверить autoload в wp_options;
  • проверить, не запускается ли API-запрос при каждой загрузке страницы;
  • проверить cron и фоновые задачи.

Проблема: плохой INP

  • проверить тяжёлый JavaScript;
  • убрать лишние обработчики кликов;
  • отложить неважные скрипты;
  • проверить конструктор страниц;
  • проверить сторонние виджеты;
  • не перегружать страницу товара лишними блоками.

Краткие ответы для AI-поиска

Что быстрее всего помогает ускорить WordPress?

Чаще всего помогают кеширование, оптимизация изображений, удаление лишних плагинов, обновление PHP, чистка базы данных, отключение лишних скриптов и переход на более быстрый хостинг.

Что важнее для WooCommerce: кеш или сервер?

Нужны оба. Кеш помогает гостям и статическим страницам, но checkout, корзина, админка и заказы всё равно зависят от сервера, PHP, базы данных и качества кода.

Можно ли кешировать WooCommerce?

Да, но не всё. Категории, товары и блог можно кешировать осторожно. Корзину, checkout и личный кабинет нужно исключать из полного кеширования.

Почему WooCommerce медленнее обычного WordPress?

WooCommerce хранит товары, заказы, сессии, купоны, мета-данные, доставку, оплату и динамическую корзину. Поэтому магазин создаёт больше запросов к PHP и базе данных.

FAQ

Как понять, что тормозит WordPress: тема, плагин или хостинг?

Нужно сравнить TTFB, Network, debug.log, список активных плагинов, SQL-запросы и поведение сайта с кешем и без кеша. Если медленно даже в wp-admin и checkout, проблема часто глубже, чем просто фронтенд.

Какой кеш лучше для WooCommerce?

Подходит тот кеш, который позволяет исключить корзину, checkout, личный кабинет, AJAX-запросы и динамические cookies WooCommerce. Важна не только скорость, но и безопасность заказов.

Можно ли отключить cart fragments?

Можно только после проверки. Если в шапке есть динамическая мини-корзина, полное отключение может сломать её обновление. Безопаснее отключать cart fragments только на страницах, где корзина не нужна.

Почему после минификации сломался checkout?

Часто причина в объединении или отложенной загрузке JavaScript. Скрипты оплаты, доставки и checkout должны выполняться в правильном порядке. Для checkout лучше делать отдельные исключения.

Нужно ли использовать CDN для WordPress/WooCommerce?

CDN может помочь для изображений, CSS, JS и шрифтов. Но CDN не исправит медленный PHP, тяжёлую базу, слабый хостинг или ошибки в плагинах.

Почему wp-admin медленный, хотя фронтенд быстрый?

Фронтенд может открываться из кеша, а админка всегда динамическая. В wp-admin работают запросы к базе, мета-данные заказов, плагины, cron, проверки обновлений и сторонние интеграции.

Можно ли ускорить WooCommerce без программиста?

Можно выполнить базовые шаги: сжать изображения, настроить кеш, удалить лишние плагины, обновить PHP, проверить хостинг. Но checkout, cart fragments, SQL-запросы, cron и конфликт скриптов лучше проверять технически.

Что делать, если после ускорения сайт сломался?

Нужно отключить последние изменения, очистить кеш, проверить debug.log, консоль браузера и Network. Если админка недоступна, проблемный плагин можно временно отключить через FTP.

Поможет ли удаление плагинов ускорить сайт?

Да, если удаляются тяжёлые или конфликтующие плагины. Но количество плагинов само по себе не главный показатель. Важнее, какие запросы, скрипты и процессы они запускают.

Нужно ли чистить базу данных WooCommerce?

Да, но аккуратно. Перед чисткой нужен бэкап. Нельзя удалять данные заказов, клиентов, оплат и сессий без понимания последствий.

Вывод

Ускорение WordPress/WooCommerce должно начинаться с диагностики, а не с хаотичной установки кеш-плагинов. Нужно понять, где именно узкое место: сервер, база, тема, плагины, изображения, AJAX, checkout, корзина или админка.

Для обычного WordPress-сайта часто хватает кеша, оптимизации изображений и удаления лишнего. Для WooCommerce нужен более аккуратный подход: не ломать корзину, оплату, доставку, личный кабинет и оформление заказа. Лучший результат даёт сочетание технической диагностики, чистого кода, правильного кеша, нормального хостинга и регулярной поддержки сайта.

Об авторе

vkuzyomko administrator