Telegram

WooCommerce 2000+ SKU: запросы и object cache

Каталог на две–три тысячи SKU на shared-хостинге без object cache часто упирается в MySQL: категория грузится 6–12 секунд, фильтры «думают», админка тормозит при сохранении товара. Page cache первый экран не спасёт — нужен слой кэша объектов WordPress. Ниже — когда Redis реально помогает, а когда проблема в запросах темы.

WooCommerce 2000+ SKU: запросы и object cache

Почему большой каталог бьёт по базе

WooCommerce на каждой странице категории тянет товары, мета, таксономии, вариации. Тема и плагины фильтров добавляют JOIN по `wp_postmeta` и lookup-таблицам — на 2 000+ SKU без индексов один запрос может идти секундами.

Transients и опции копятся: «висячие» записи после удалённых плагинов, кэш виджетов, сессии — база раздувается. Это не всегда видно в PageSpeed, но чувствуется в админке и при сохранении заказа.

Object cache не заменяет нормальную вёрстку категории и не чинит N+1 в теме — он снимает повторные чтения одних и тех же объектов за один запрос.

Object cache: Redis и Memcached

На хостинге с Redis/Memcached WordPress кладёт в память результаты `get_post`, опции, термы — повторные обращения в рамках одного хита не бьют в MySQL. Плагин Redis Object Cache или встроенный модуль хостинга — типовая связка.

Без object cache на VPS с 2 GB RAM тяжёлый магазин часто упирается в лимит соединений MySQL. Переезд на тариф с Redis — дешевле, чем месяцы «оптимизации» плагинами поверх дыры в теме.

Проверка: после включения object cache в админке WooCommerce → Статус → должны появиться метрики кэша (зависит от плагина). Время генерации категории на staging сравните до/после.

WooCommerce 2000+ SKU: запросы и object cache

Lookup-таблицы и индексы WooCommerce

В WC 3.6+ есть таблицы product meta lookup — ускоряют фильтры по цене и наличию. Если магазин старый и таблицы не заполнены — WooCommerce → Статус → Инструменты → «Обновить базу данных».

Плагины вроде FacetWP ведут свой индекс — без переиндексации после массового импорта товаров фильтры тормозят или пустые (см. статью про FacetWP).

Запросы с `meta_key` без индекса на кастомных полях — частая причина тормозов B2B-магазинов с десятками атрибутов.

Transients и гигиена БД

WooCommerce → Статус → Инструменты → «Очистить transients» — разовая уборка, не ежедневный ритуал. После — проверьте, не вернулись ли зависшие записи от битого cron.

Плагины «очистки БД» на проде без бэкапа опасны — могут снести сессии корзины. Делайте на staging или в согласованное окно.

Cron `wp-cron.php` на слабом хостинге отстаёт — transients не протухают. Настройка системного cron на сервере часто стабилизирует и кэш, и рассылки.

Связка с page cache и CDN

Object cache ускоряет генерацию HTML на сервере; CDN раздаёт уже готовую страницу гостям. Для авторизованных оптовиков и корзины нужны исключения — см. статьи про CDN и FacetWP.

Не кэшируйте REST-ответы WooCommerce агрессивно на CDN — мобильные витрины и блоки Gutenberg могут показывать устаревшие остатки.

Что не делать

Не включайте object cache без мониторинга Redis — утечка памяти забьёт сервер.

Не ставьте второй плагин object cache поверх первого.

Не ждите 90+ PageSpeed только от Redis на каталоге с 80 плагинами — сначала аудит запросов и темы.

Что сделает WebStudio7

Снимем slow query log на staging, включим object cache, настроим исключения page cache, дадим отчёт до/после на вашем хостинге.

Ускорение каталога 1000+ SKU — от 9 800 ₽. Кейс автозапчастей 2 200 SKU, Mobile 38→81 — в разделе кейсов.

Только действующий WordPress. Смета до старта — @webstudio7. Воронеж и РФ.

По теме в блоге

Услуга: Ускорение WordPress · Кейс: Кейс: автозапчасти, 38→81 Mobile · Расценки · Контакты

Все статьи блога

Опишите задачу

Опишите URL сайта и симптом — ответим в Telegram @webstudio7 или на info@web-studio-7.ru в рабочее время. Смета — до начала работ.