VPS для WooCommerce: оптимизация магазина
WooCommerce мощный, но тяжёлый: корзина, сессии и фильтры каталога грузят базу и PHP. На своём VPS вы можете подкрутить каждый слой. Разберём Redis, тюнинг MariaDB и PHP-FPM и умное кэширование, которое не ломает корзину.
Содержание
Почему WooCommerce тормозит
['Проблема не в движке, а в динамике: каждая страница корзины и оформления не кэшируется и бьёт по базе. Плюс WordPress хранит опции и сессии в MySQL. Решение — вынести кэш объектов в память и разгрузить диск.', 'На тарифах MAATRIX связка AMD EPYC + NVMe уже снимает главный тормоз медленных магазинов — дисковые операции при чтении опций и мета-полей товаров идут быстро.']Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для WooCommerceRedis object cache
['Redis кэширует результаты запросов к базе прямо в оперативке. Ставим сервер и PHP-расширение:', 'apt install redis-server php-redis -y\nsystemctl enable --now redis-server\nsystemctl restart php8.2-fpm', 'Ограничиваем память Redis и включаем вытеснение старых ключей в /etc/redis/redis.conf:', 'maxmemory 256mb\nmaxmemory-policy allkeys-lru', 'systemctl restart redis-server', 'В админке WordPress ставим плагин Redis Object Cache и жмём Enable — или включаем через WP-CLI:', 'wp plugin install redis-cache --activate\nwp redis enable']
Тюнинг MariaDB
['Магазину нужен буфер InnoDB побольше, чтобы горячие данные каталога жили в памяти. Создаём/etc/mysql/mariadb.conf.d/99-tuning.cnf:', '[mysqld]\ninnodb_buffer_pool_size = 1G\ninnodb_log_file_size = 256M\ninnodb_flush_log_at_trx_commit = 2\nmax_connections = 150\nquery_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\npm.max_children = 20\npm.start_servers = 4\npm.min_spare_servers = 2\npm.max_spare_servers = 6\npm.max_requests = 500', 'И поднимаем лимиты памяти и времени в php.ini для тяжёлых операций импорта:', 'memory_limit = 256M\nmax_execution_time = 120\nupload_max_filesize = 64M', 'systemctl restart php8.2-fpm']
Кэш страниц без поломки корзины
['Кэшировать можно только анонимные страницы. Исключаем корзину, оформление и залогиненных пользователей по cookie в конфиге nginx:', 'set $skip_cache 0;\nif ($request_uri ~* "/cart|/checkout|/my-account|/wp-admin") { set $skip_cache 1; }\nif ($http_cookie ~* "woocommerce_items_in_cart|wordpress_logged_in") { set $skip_cache 1; }\n\nfastcgi_cache_bypass $skip_cache;\nfastcgi_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\nwp db optimize', 'Вторая частая проблема — тяжёлые фильтры каталога, которые делают полный перебор таблиц. Здесь спасает индекс в базе и достаточный буфер InnoDB из прошлого раздела. И помните: сколько бы вы ни кэшировали, при реально высоком трафике упирается всё в железо — на AMD EPYC + NVMe у MAATRIX магазин держит наплыв покупателей в распродажу, где слабый shared-хостинг просто ложится.']
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для WooCommerceЧастые вопросы
Redis или Memcached для WooCommerce?
Redis предпочтительнее: он персистентный, поддерживает больше типов данных и лучше интегрирован с популярным плагином object cache. Разница в скорости для WooCommerce минимальна.
Сколько RAM нужно магазину на WooCommerce?
От 4 ГБ для комфортной работы: 1 ГБ под InnoDB, память под PHP-воркеры и Redis. При росте каталога и трафика — 8 ГБ. На MAATRIX план масштабируется без переезда.
Не будет ли Redis отдавать устаревшие цены?
Нет: object cache инвалидируется при изменении товара. Кэшируется результат запроса, а не сама страница, и WooCommerce корректно сбрасывает ключи при обновлении.