Умный фильтр на 1С-Битрикс тормозит, когда тяжело не «открытие раздела», а пересчёт фасетов: свойства в фильтре, индекс, SQL на URL с параметрами. Сначала сравнивают время раздела без фильтра и с двумя-тремя условиями. Если без фильтра быстро, а с фильтром нет — это отдельная задача, её не лечат общим включением композита.
Общий порядок замеров каталога — в статье «Тормозит каталог». Здесь только фильтр.
Чем умный фильтр отличается от списка товаров
Список раздела отдаёт порцию карточек. Умный фильтр дополнительно считает, какие значения свойств ещё доступны и сколько товаров останется после каждого клика. На большом каталоге эта вторая работа может быть дороже вывода самих товаров.
Поэтому симптом «раздел открывается пять секунд, а после выбора бренда — пятнадцать» информативнее, чем «каталог тормозит». Зафиксируйте контрольные URL: раздел без параметров, тот же раздел с одним свойством, с двумя, с сортировкой. Записывайте TTFB документа, а не только «ощущение в браузере».
Что почти всегда оказывается в профиле
- Слишком много свойств в фильтре. Каждое свойство, которое «пусть будет, вдруг пригодится», участвует в расчёте. Цвет, размер и бренд — одно. Десятки редких характеристик для узкого раздела — другое. Сначала сокращают набор на витрине, потом оптимизируют запросы.
- Фасетный индекс не готов или постоянно перестраивается. Пока индекс неполный, фильтр может ходить в тяжёлые выборки по свойствам. Пока он пересчитывается вместе с импортом, пользовательский хит попадает в ту же очередь, что и фон.
- Запросы в цикле и сортировки без опоры на индекс. Компонент фильтра и шаблон могут отдельно дергать наличие, цены и количество. На URL с параметрами это умножается.
- Фильтр по полям, которые плохо селективны. Свойство «да/нет» на всём каталоге или строка, по которой нет нормального индекса, даёт полный перебор.
Добавлять «ещё один индекс в MySQL» до EXPLAIN конкретного запроса опасно: запись при обмене подорожает, а фильтр может не ускориться.
Как отличить фильтр от остального каталога
Сравните четыре сценария в одно и то же время суток, с одинаковым состоянием кеша:
- раздел без фильтра;
- тот же раздел с фильтром;
- карточка товара;
- поиск по каталогу.
Если медленные все четыре — начинайте с общей диагностики каталога, а не с настройки умного фильтра. Если медленный только фильтр — не разгоняйте карточку и не отключайте кеш всего сайта.
Отдельно проверьте авторизованного покупателя с персональной ценой. Кеш анонимной витрины может быть быстрым, а фильтр для группы «опт» каждый раз считается заново.
Фасетный индекс: на что смотреть заказчику
Не обязательно читать код, чтобы задать правильные вопросы исполнителю.
- Запущен ли пересчёт фасетов по расписанию и сколько он длится на полном каталоге.
- Не стартует ли полный пересчёт на пользовательском хите.
- Не совпадает ли окно пересчёта с обменом 1С и переиндексацией поиска.
- После смены свойства товар появляется в фильтре сразу, через минуты или после ручного пересчёта.
Если индекс «вечно в процессе» на каталоге в сотни тысяч SKU, проблема уже не в галочке «включить умный фильтр», а в нагрузке индексации на большом каталоге. На Geometria как раз пересекались SQL, кеш и фоновые пересчёты на 800 000 SKU.
Свойства: что оставить в фильтре
Для витрины обычно хватает свойств, по которым покупатель реально сужает выбор: бренд, ключевые характеристики, наличие, цена. Внутренние служебные свойства, выгрузки и «на всякий случай» в публичный фильтр не ставят.
Проверьте:
- свойство в умном фильтре включено в инфоблоке, но не нужно на витрине;
- одно и то же по смыслу свойство дублируется (цвет как список и как строка);
- фильтр строится по торговым предложениям, а считает родителя, или наоборот;
- диапазон цены считается по всем SKU раздела без ограничения.
Сужение набора свойств часто даёт больший выигрыш, чем смена хостинга.
Безопасный порядок правок
- Замерить контрольные URL без изменений.
- Снять профиль SQL и времени компонента на URL с фильтром.
- Убрать с витрины свойства, которые не участвуют в выборе покупки.
- Проверить, что фасетный индекс догоняет каталог в фоне, а не на хите.
- Только затем менять запросы, пакетную загрузку и индексы БД.
- Повторить те же URL. Проверить, что фильтр по-прежнему показывает верные количества и не «теряет» товары.
Не включайте композит как единственное лечение фильтра: динамическая область с фасетами всё равно посчитается. Не очищайте кеш всего каталога после каждого изменения свойства — это ускорит тест и убьёт прод в час обмена.
Что передать разработчику
Нужны медленные URL с параметрами фильтра, время суток, HAR или скрин Network с TTFB, список свойств в фильтре раздела и расписание обмена и переиндексации. Без этого разбор начинается с догадок.
Формат работы с такими задачами — на странице ускорения каталога. Если параллельно «плывут» цены и остатки, это уже обмен с 1С, а не умный фильтр.
Итог
Медленный умный фильтр — отдельный сценарий: фасеты, набор свойств и SQL на параметрах URL. Его диагностируют сравнением раздела с фильтром и без, а ускоряют сокращением работы, а не общей «оптимизацией Битрикс». Когда фильтр быстрый, а раздел всё равно тяжёлый, возвращайтесь к профилю всего каталога.



