554 слов | 4 минуты
Оптимизация производительности сайта на 1С-Битрикс
Пошаговый подход к отладке скорости сайта на Битрикс: от анализа медленных страниц до настройки композитного кэша.
Пошаговая отладка скорости
Шаг 1 — Включить монитор производительности
Включите монитор производительности на час. Найдите самые долго загружающиеся страницы (в магазинах это обычно каталог и страницы брендов).
На фото — те же страницы после отладки
Шаг 2 — Открыть проблемную страницу и включить отладку
Изучите SQL-запросы: их количество, время выполнения, наличие запросов внутри циклов.
Основные причины низкой производительности
Проблема 1: Тяжёлые SQL-запросы
Битрикс строит запросы с 5–6 JOIN-ами из-за структуры хранения данных (таблицы товаров, цен, складов, свойств, языков, прав). Это нормально при небольшой выборке, но при полумиллионе товаров без фильтрации запрос будет критически медленным.

Решения:
- Не выводить единым списком более 1000 товаров — настроить разделы и фильтры
- Запрашивать в компоненте только нужные свойства
- Отключать проверку прав доступа там, где она не нужна

Проблема 2: SQL-запросы в PHP-цикле
Вместо настройки компонента на получение всех нужных данных разработчик выполняет отдельный запрос для каждого товара. Решение — использовать встроенные возможности выборки компонента.
Проблема 3: Неправильно настроенный кэш
Если не установлен параметр «кэшировать при установленном фильтре», кэш фактически не работает, так как на каждой странице каталога есть та или иная фильтрация.
Настройка кэширования компонентов
- Включать кэш у всех компонентов
- Установить «кэшировать при установленном фильтре» для каталога
- Отключать в настройках компонента весь неиспользуемый функционал — не просто скрывать в шаблоне, а именно отключать
- Запрашивать только нужные свойства (каждое свойство = отдельный запрос к базе)

Оптимизация графики
- Подгонять изображения под размер отображаемого контейнера через
ResizeImageGet - Использовать серверное сжатие:
jpegoptim,optipng - Применять lazy load для изображений в длинных списках: jquery.lazyload
- Предпочитать формат JPEG вместо PNG там, где прозрачность не нужна
$("img.lazyload").lazyload(); // инициализация плагина
Примечание: при AJAX-подгрузке товаров (кнопка «Показать ещё») повторно вызывайте инициализацию после каждой загрузки.

Сжатие ресурсов
Объединение CSS и JS через Битрикс (Настройки → Настройки продукта → Настройки модулей):

- Объединяет файлы, подключённые через
SetAdditionalCSS/AddHeadScript, снижая количество HTTP-запросов - При переносе JS в конец страницы — проверьте консоль на ошибки во всём проекте
GZIP на стороне сервера:
В BitrixEnv включён по умолчанию. В хостинг-панелях — настраивается в настройках домена.

Сторонние скрипты
Метрики, чаты, счётчики — каждый сторонний скрипт замедляет сайт. Используйте вкладку Network в DevTools для выявления тормозящих подключений.

- Обсудите с командой необходимость каждого подключения
- Отключайте через комментирование (не удаление) — на случай отката
- Подключайте аналитику с задержкой 3–5 секунд после загрузки документа
Анализ SQL-индексов
Включите логирование медленных запросов в модуле производительности. Через сутки перейдите в Настройки → Производительность → Индексы → Анализ индексов и нажмите Выполнить анализ.

Обращайте внимание на запросы с большой длительностью и высокой частотой. Для крупных таблиц (> 100 МБ) создавайте индексы в часы минимальной нагрузки.

Композитный кэш
После оптимизации основных компонентов включите композитное кэширование: Битрикс создаёт HTML-копию страницы и динамически подгружает изменяемые данные (авторизацию, корзину).
С включённым композитным кэшем страница отдаётся сервером за 0,03 секунды.

Чек-лист оптимизации
- Монитор производительности включён, настройки соответствуют рекомендуемым
- Все компоненты настроены на кэширование
- SQL-запросы не вызываются внутри PHP-циклов
- При включении кэша страница формируется не более чем за 200 SQL-запросов
- Компоненты запрашивают только нужные свойства
- Проверка прав доступа отключена там, где не нужна
- Кэширование при установленном фильтре включено
- Настроен композитный сайт
- Графика оптимизирована
- GZIP настроен на сервере
- Неиспользуемые стили и скрипты удалены
- Сторонние плагины не создают критической задержки
- Дерево DOM не избыточно
- Необходимые SQL-индексы созданы