MAATRIX / Блог / VPS для WooCommerce: оптимизация магазина

VPS для WooCommerce: оптимизация магазина

VPS для WooCommerce: оптимизация магазина
Блог MAATRIX · 2026-07-07

WooCommerce мощный, но тяжёлый: корзина, сессии и фильтры каталога грузят базу и PHP. На своём VPS вы можете подкрутить каждый слой. Разберём Redis, тюнинг MariaDB и PHP-FPM и умное кэширование, которое не ломает корзину.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Почему WooCommerce тормозит

Проблема не в движке, а в динамике: каждая страница корзины и оформления не кэшируется и бьёт по базе. Плюс WordPress хранит опции и сессии в MySQL. Решение — вынести кэш объектов в память и разгрузить диск.

На тарифах MAATRIX связка AMD EPYC + NVMe уже снимает главный тормоз медленных магазинов — дисковые операции при чтении опций и мета-полей товаров идут быстро.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS для WooCommerce

Redis object cache

Redis кэширует результаты запросов к базе прямо в оперативке. Ставим сервер и PHP-расширение:

apt install redis-server php-redis -y
systemctl enable --now redis-server
systemctl restart php8.2-fpm

Ограничиваем память Redis и включаем вытеснение старых ключей в /etc/redis/redis.conf:

maxmemory 256mb
maxmemory-policy allkeys-lru
systemctl restart redis-server

В админке WordPress ставим плагин Redis Object Cache и жмём Enable — или включаем через WP-CLI:

wp plugin install redis-cache --activate
wp redis enable

Тюнинг MariaDB

Магазину нужен буфер InnoDB побольше, чтобы горячие данные каталога жили в памяти. Создаём /etc/mysql/mariadb.conf.d/99-tuning.cnf:

[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
max_connections = 150
query_cache_type = 0
systemctl restart mariadb

Значение buffer_pool ставьте примерно в половину доступной RAM. Query cache в MariaDB для WooCommerce лучше выключить — он чаще мешает, чем помогает.

Настройка PHP-FPM под нагрузку

Дефолтные лимиты PHP-FPM малы для магазина. Правим пул в /etc/php/8.2/fpm/pool.d/www.conf:

pm = dynamic
pm.max_children = 20
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500

И поднимаем лимиты памяти и времени в php.ini для тяжёлых операций импорта:

memory_limit = 256M
max_execution_time = 120
upload_max_filesize = 64M
systemctl restart php8.2-fpm

Кэш страниц без поломки корзины

Кэшировать можно только анонимные страницы. Исключаем корзину, оформление и залогиненных пользователей по cookie в конфиге nginx:

set $skip_cache 0;
if ($request_uri ~* "/cart|/checkout|/my-account|/wp-admin") { set $skip_cache 1; }
if ($http_cookie ~* "woocommerce_items_in_cart|wordpress_logged_in") { set $skip_cache 1; }

fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
nginx -t && systemctl reload nginx
  • Проверьте, что при добавлении товара в корзину страница перестаёт кэшироваться (заголовок X-Cache: BYPASS).
  • Redis + тюнинг базы легко ускоряют магазин в 2-3 раза без смены темы.

Мониторинг и частые ошибки

После оптимизации важно понимать, что реально происходит на сервере. Посмотрите загрузку в реальном времени — процессор, память и активные процессы:

apt install htop -y && htop

Проверьте, что Redis действительно принимает запросы и растёт число попаданий в кэш:

redis-cli info stats | grep keyspace

Типичная ошибка магазинов — оставить в WooCommerce неограниченное хранение сессий и логов, из-за чего таблица wp_options и постмета разрастаются на гигабайты. Регулярно чистите транзиенты через WP-CLI:

wp transient delete --all
wp db optimize

Вторая частая проблема — тяжёлые фильтры каталога, которые делают полный перебор таблиц. Здесь спасает индекс в базе и достаточный буфер InnoDB из прошлого раздела. И помните: сколько бы вы ни кэшировали, при реально высоком трафике упирается всё в железо — на AMD EPYC + NVMe у MAATRIX магазин держит наплыв покупателей в распродажу, где слабый shared-хостинг просто ложится.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать VPS для WooCommerce

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Частые вопросы

Redis или Memcached для WooCommerce?

Redis предпочтительнее: он персистентный, поддерживает больше типов данных и лучше интегрирован с популярным плагином object cache. Разница в скорости для WooCommerce минимальна.

Сколько RAM нужно магазину на WooCommerce?

От 4 ГБ для комфортной работы: 1 ГБ под InnoDB, память под PHP-воркеры и Redis. При росте каталога и трафика — 8 ГБ. На MAATRIX план масштабируется без переезда.

Не будет ли Redis отдавать устаревшие цены?

Нет: object cache инвалидируется при изменении товара. Кэшируется результат запроса, а не сама страница, и WooCommerce корректно сбрасывает ключи при обновлении.