Каталог WooCommerce грузится долго

Типичная ситуация. Домен, название компании и скриншоты кабинета здесь не публикуются.

Магазин на WooCommerce с большим каталогом. Карточка товара ещё открывается, а архив магазина и фильтр начинают отвечать секундами. На таких проектах часто встречается вилка около 4–10 секунд, пока список собирается заново на каждый просмотр. Это не «хостинг внезапно умер».

Иллюстрация: каталог WooCommerce ещё загружает товары, запрос фрагментов идёт секундами
Иллюстрация симптома на вымышленном адресе. Это не снимок сайта клиента и не замер конкретного магазина.

Что обычно видно до правок

  • На странице магазина висят плагины, которые к списку товаров не относятся, но считают его на каждом хите.
  • Фильтр и сортировка делают тяжёлые запросы по метаполям товара.
  • Нет кеша объектов: WordPress снова и снова читает одни и те же опции и термы.
  • Картинки в каталоге — исходники, а не нарезанные размеры.
  • На боевом сайте включён WP_DEBUG, и журнал пишется вместе со страницей.

Скорость

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

Архитектура

Сначала выключают то, что на списке не нужно, и убеждаются, что отладка на проде выключена. Затем включают кеш объектов — Redis или Memcached, — если хостинг его отдаёт. Индексы имеют смысл там, где фильтр реально ищет по мете, а не «на всякий случай» по всем таблицам. Страничный кеш архива допустим только для гостя: корзину и фрагменты конкретного покупателя в него не кладут. Если после этого один запрос всё ещё держит страницу, его переписывают точечно, а не меняют весь магазин.

Безопасность

Журнал отладки в публичной папке — и замедление, и утечка путей. Его закрывают в том же проходе, что и кеш.

SEO-техника

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

Что делать

Порядок: лишние плагины на архиве, отладка, кеш объектов, медленный запрос, картинки. Страница стека — поддержка WordPress.

Срок и стоимость

Разовая задача начинается от 3 000 ₽. Точную сумму программист называет после просмотра архива и журнала запросов.

Похожая ситуация?

Напишите в чат, что происходит на сайте. Помощник ответит сразу. Программист в рабочее время обычно отвечает в течение часа. Работу начинаем после согласования. Ссылку на бесплатную проверку главной можно приложить из раздела проверки сайта.

Другие разборы