Bitrix умеет работать быстро, но по умолчанию этого не делает. Тяжёлые компоненты, лишние запросы и неоптимизированные шаблоны накапливаются годами.
Ускорение не обязательно означает переписывание. Часто достаточно найти несколько узких мест и исправить их без смены платформы.
Почему Bitrix тормозит
Платформа даёт много готовых инструментов, но каждый компонент может тянуть за собой запросы, которые не нужны на конкретной странице.
- Тяжёлые компоненты на каждом хите.
- Отключённый или неверный кэш.
- Запросы без индексов.
- Большие изображения без оптимизации.
- Лишние JS-библиотеки.
- Медленный сервер и PHP.
- Синхронные интеграции.
- Шаблоны с дублирующими запросами.
Сначала измерения
Не меняйте код, пока не поняли, где теряется время. Нужны замеры до и после, иначе улучшение будет казаться.
- Lighthouse и PageSpeed.
- WebPageTest.
- Логи медленных запросов.
- Профайлер PHP.
- Метрики сервера.
- Реальные данные Метрики.
Кэш и композитный кэш
Кэш — самый дешёвый способ ускорить Bitrix. Но он должен быть настроен по типам страниц, а не включён «для всего».
- Кэш компонентов.
- Композитный кэш.
- Кэш меню и справочников.
- Тегированный кэш.
- Сброс при изменении данных.
- Проверка после релиза.
Композитный кэш хорошо работает для каталога и статических страниц, но не подходит для корзины и персональных данных.
Компоненты и запросы
Один компонент может делать десятки запросов. На списке из 30 товаров это превращается в сотни обращений к базе.
- Выбирать только нужные поля.
- Избегать N+1.
- Кэшировать справочники.
- Ограничивать выборки.
- Использовать индексы.
- Убирать лишние компоненты.
Инфоблоки и HL-блоки
Инфоблоки удобны, но при больших объёмах требуют аккуратной работы. HL-блоки помогают хранить дополнительные данные и связи.
- Индексы по часто используемым полям.
- Минимум свойств в выборке.
- Разделение каталога и контента.
- Кэш для справочников.
- Проверка на реальном объёме.
- Ротация логов.
Изображения
Каталог с большими фото — частая причина медленной загрузки. Особенно на мобильном.
- WebP или AVIF.
- Правильные размеры.
- Srcset и ленивая загрузка.
- CDN для статики.
- Сжатие без потери качества.
- Отказ от тяжёлых слайдеров.
JS и шаблоны
Шаблон может подключать библиотеки, которые используются только на одной странице. Это замедляет все остальные.
- Разделение бандлов.
- Отложенная загрузка.
- Удаление неиспользуемых библиотек.
- Минификация.
- Критический CSS.
- Проверка сторонних виджетов.
Сервер и PHP
Иногда проблема не в коде, а в окружении. Старая версия PHP, мало памяти и медленный диск дают заметную задержку.
- PHP 8.x.
- OPcache.
- PHP-FPM и воркеры.
- Быстрый диск.
- Достаточная память.
- Мониторинг ресурсов.
База и индексы
Запросы без индексов растут вместе с каталогом. То, что работало на 5 000 товаров, ломается на 50 000.
- Медленные запросы.
- Отсутствующие индексы.
- Дублирующие запросы.
- Большие JOIN.
- Кэш выборок.
- Регулярная оптимизация.
CDN и статика
Статика не должна ехать с основного сервера, особенно если аудитория распределена по регионам.
- CDN для изображений.
- Кэш статических файлов.
- HTTP/2 или HTTP/3.
- Сжатие.
- Долгий cache-control.
- Отдача с ближайшей точки.
Интеграции и очереди
Синхронные вызовы внешних API могут блокировать страницу. Их нужно выносить в очереди или кэшировать.
- Очереди для обмена.
- Кэш ответов API.
- Таймауты.
- Повторные попытки.
- Мониторинг.
- Отказоустойчивость.
Что не помогает
Иногда «ускорение» сводится к покупке более мощного сервера. Это может дать эффект, но не устраняет причину.
- Только апгрейд сервера.
- Отключение кэша «для проверки».
- Сжатие всех изображений вручную.
- Установка ещё одного плагина.
- Переписывание без замеров.
- Игнорирование мобильных.
План работ
Начинайте с измеримых улучшений, которые не ломают сценарии. Сначала кэш и изображения, затем запросы и инфраструктура.
Зафиксировать текущие показатели.
Настроить по типам страниц.
Сжать и перевести в современный формат.
Убрать N+1 и лишние выборки.
PHP, база, CDN.
Сравнить до и после.
Чек-лист
Итог
Ускорение Bitrix — это последовательность небольших улучшений, а не один переключатель. Начните с замеров и кэша, затем переходите к запросам и инфраструктуре.
Кэш по типам страниц
Не все страницы можно кэшировать одинаково. Каталог, карточка, корзина и личный кабинет требуют разных правил.
- Каталог и категории.
- Карточка товара.
- Корзина.
- Личный кабинет.
- Статические страницы.
- Поиск.
Профилирование запросов
Профайлер показывает, какие вызовы занимают время. Без него оптимизация превращается в угадывание.
- Время запроса.
- Количество запросов.
- Дубли.
- Тяжёлые выборки.
- Отсутствующие индексы.
- Внешние вызовы.
Шаблоны и компоненты
Шаблон может быть красивым, но тяжёлым. Проверьте, какие компоненты и библиотеки он подключает.
- Лишние компоненты.
- Повторные запросы.
- Большие циклы.
- Вложенные выборки.
- Подключение JS.
- Кэш фрагментов.
Highload и распродажи
В пик нагрузка растёт в разы. Если сайт едва держит обычный трафик, распродажу он не переживёт.
- Кэш на всех уровнях.
- Очереди.
- Ограничение поиска.
- Статическая страница ожидания.
- Мониторинг.
- План отката.
Мониторинг после ускорения
Скорость может деградировать после обновления или роста каталога. Нужны постоянные замеры, а не разовая акция.
- Метрики Lighthouse.
- Реальные скорости.
- Медленные запросы.
- Ошибки.
- Нагрузка сервера.
- Алерты.
Когда нужен рефакторинг
Иногда точечные правки не помогают. Если архитектура мешает развитию, стоит обсудить более глубокие изменения.
- Каждая доработка ломает кэш.
- Компоненты дублируют логику.
- Интеграции держатся на костылях.
- Каталог не масштабируется.
- Обновления опасны.
- Поддержка стоит слишком дорого.
Как закрепить результат
Ускорение нужно защищать процессом: проверки перед релизом, бюджет производительности и мониторинг.
Сжатие и HTTP
Сжатие и правильные заголовки дают эффект без изменения кода. Проверьте, что сервер отдаёт их для всех типов файлов.
- Gzip или Brotli.
- Cache-Control.
- ETag.
- HTTP/2.
- Кэш браузера.
- Проверка заголовков.
Логи и ошибки
Ошибки PHP и медленные запросы часто остаются незамеченными. Логи помогают найти причину, а не только симптом.
- Уровень логирования.
- Ротация.
- Медленные запросы.
- Ошибки 500.
- Внешние вызовы.
- Алерты.
Безопасность кэша
Кэш может отдавать персональные данные другому пользователю, если настроен слишком широко. Это опаснее, чем медленный сайт.
- Разделение по сессиям.
- Запрет кэша для кабинета.
- Проверка заголовков.
- Сброс при изменении.
- Тест на разных пользователях.
- Аудит настроек.
Проверяйте результат на реальных пользователях, а не только в лаборатории. Лабораторные метрики важны, но конверсия и поведение на мобильном показывают, стало ли лучше на самом деле.
Замерим страницы, найдём узкие места и составим план без переписывания.
Заказать аудит →