Почему каталог на Битрикс тормозит: диагностика по шагам
Как измерить медленный каталог и последовательно проверить свойства, умный фильтр, торговые предложения, запросы, кеш и SEO‑страницы.
Каталог — самая сложная часть интернет-магазина на Битрикс. Пока товаров мало, ошибки проектирования почти не видны. Но когда растут свойства, торговые предложения, фильтры и SEO-посадочные, каждая страница начинает собираться слишком дорого.
Сначала измерьте, где теряется время
Ощущения «каталог медленный» недостаточно. Зафиксируйте время ответа сервера, полную загрузку, число запросов к базе и поведение страницы с холодным и прогретым кешем. Отдельно проверьте список товаров, умный фильтр и карточку товара.
Измерения выполняйте на копии production‑данных или в согласованное окно. Режимы отладки и подробный SQL‑лог сами создают нагрузку, поэтому их нельзя надолго оставлять на живом магазине.
Проверьте кеш, но не маскируйте им проблему
Кеш компонента полезен, если ключи учитывают раздел, фильтр, цены и права. Слишком широкий сброс кеша делает первый запрос дорогим, а неверный ключ может показать посетителю чужую цену или недоступный ассортимент.
Проблема 1. Слишком много свойств в фильтре
Не каждое свойство должно участвовать в умном фильтре. Если в фильтрации участвуют десятки полей, которые редко нужны пользователю, каталог начинает тормозить и создавать лишние URL.
Проблема 2. Нет дисциплины в свойствах
Одинаковые характеристики могут быть заведены разными способами: строка, список, число, привязка. В результате сортировки, сравнение и фильтры работают нестабильно.
Проблема 3. Торговые предложения разрастаются
SKU удобны, но при неправильной структуре они увеличивают количество запросов, усложняют карточку и остатки. Важно заранее определить, какие параметры являются предложениями, а какие — свойствами товара.
Проблема 4. SEO-посадочные создают дубли
Фильтры могут генерировать тысячи URL, но полезными будут только часть из них. Нужна карта посадочных: какие страницы индексируем, какие закрываем, где задаём title, description и текст.
Диагностическое дерево
- Откройте раздел без фильтра. Если он медленный, проверяйте запросы списка, цены, остатки и шаблон карточки.
- Добавляйте условия фильтра по одному. Так видно свойство или комбинацию, после которой растёт время ответа.
- Сравните гостя и авторизованного пользователя. Разница указывает на права, типы цен, персональные скидки или некорректный кеш.
- Проверьте SKU отдельно. Большое число предложений требует пакетной загрузки данных, а не запроса в цикле.
- Сверьте URL. Один набор условий не должен бесконтрольно создавать множество индексируемых адресов.
Типовые причины в коде
- запросы к инфоблоку, цене или остатку внутри цикла товаров;
- получение всех свойств вместо нужного набора;
- тяжёлая обработка изображений во время запроса;
- сортировка по неиндексированному или вычисляемому значению;
- вызов внешнего сервиса при сборке каждой карточки;
- сброс общего кеша после изменения одного товара.
Сначала устраните повторяющиеся запросы и лишние данные, затем настраивайте кеш. Иначе ускорение будет кратковременным, а причина останется.
Что проверять при аудите каталога
- список свойств и их типы;
- какие свойства участвуют в фильтре;
- количество торговых предложений;
- SQL-запросы и кеш компонентов;
- сортировки и остатки;
- дубли URL;
- структуру разделов и посадочных страниц.
Что делать сначала
Не начинайте с «ускорить всё». Сначала нужно понять, какие сценарии важны покупателю: поиск товара, фильтрация, карточка, корзина, оформление заказа. После этого можно чистить свойства, кешировать узкие места и закрывать дубли.
Как проверить результат
Повторите одинаковые сценарии до и после изменения: раздел, фильтр с популярными условиями, сортировка, карточка и добавление в корзину. Зафиксируйте медиану нескольких запусков, корректность цен и остатка, число запросов и отсутствие новых дублей URL.
Оптимизация считается успешной, если ускорился реальный сценарий покупателя, а не только один тестовый URL с прогретым кешем.