Оптимизация скорости загрузки сайта 1С-Битрикс
Типичная картина после нескольких лет развития битрикс-проекта: TTFB 800–1200 мс, Largest Contentful Paint за 4 секунды, PageSpeed Insights в красной зоне. Причины обычно не в хостинге — они внутри самого приложения: некешированные компоненты, неоптимизированные запросы к инфоблокам, 200+ HTTP-запросов на страницу из-за несобранных JS/CSS, и изображения без сжатия, загружаемые в оригинальном разрешении.
Оптимизация 1С-Битрикс — это не одно действие, а последовательное устранение нескольких классов проблем. Каждый класс даёт свой прирост, и важно работать в правильном порядке: сначала серверная сторона, потом фронтенд.
Серверная сторона: кеш, запросы, агенты
Кеширование компонентов — первое, с чего начинается любой аудит. В Битрикс каждый компонент управляет своим кешем через параметр CACHE_TYPE и CACHE_TIME. Часто встречается ситуация, когда разработчики выставили CACHE_TYPE = N («без кеша») при отладке и забыли вернуть. Один такой компонент на главной странице — и TTFB растёт в разы.
Проверка через \Bitrix\Main\Diag\Debug::dumpToFile() или модуль bitrix.performance показывает список некешированных компонентов и время их выполнения. Стандартный инструмент — панель производительности (.../bitrix/admin/perfmon_panel.php).
Оптимизация запросов к БД. Инфоблоки Битрикс при неаккуратном использовании генерируют запросы с SELECT * к b_iblock_element, b_iblock_element_property, b_iblock_section без ограничения по полям. Переход на API D7 (Iblock\ElementTable) с явным указанием select снижает объём передаваемых данных и нагрузку на MySQL. Отдельная тема — N+1 проблема: компонент в цикле делает запрос для каждого элемента. Выявляется через $DB->ShowSqlStat() или MySQL slow query log с long_query_time = 0.1.
Агенты и фоновые задачи. Агенты Битрикс по умолчанию выполняются в контексте веб-запроса, если не настроен cron-режим. Это добавляет 50–300 мс к случайным запросам. Перевод агентов на cron (/bitrix/modules/main/tools/cron_events.php) убирает эту задержку полностью.
Композитный сайт: что реально ускоряет и когда не помогает
Композитный режим Битрикс (bitrix.composite) кеширует HTML страниц в файловой системе и отдаёт их без выполнения PHP, заменяя динамические блоки (корзина, авторизация) через AJAX. Для контентных и каталожных страниц это самый мощный инструмент — TTFB падает до 20–50 мс.
Но композит не работает автоматически. Требуется разметка динамических зон тегом bitrix:nocache, перевод авторизации и корзины на AJAX-компоненты, настройка исключений для страниц с персонализацией. Неправильная настройка приводит к тому, что в кеше оказываются данные залогиненного пользователя — критическая ошибка на проектах с личным кабинетом.
Фронтенд: HTTP-запросы и вес ресурсов
После серверной оптимизации смотрим на клиентскую часть через Chrome DevTools → Network. Типичные проблемы битрикс-проектов:
-
Несобранные CSS/JS: каждый модуль подключает свои файлы отдельно. На нагруженном проекте это 30–80 файлов. Битрикс умеет объединять их через настройки сжатия (
Настройки → Производительность → Сжатие), но требует корректной настройки путей и HTTP/2. -
Изображения без оптимизации: оригинальные файлы из медиабиблиотеки раздаются без конвертации в WebP, без
srcsetдля retina. Модульresize_imageпозволяет нарезать изображения на лету, но без настройки кеша нарезки это создаёт нагрузку. -
Отсутствие lazy load: изображения ниже fold загружаются вместе с первым экраном. В Битрикс это решается через атрибут
loading="lazy"в шаблонах компонентов или JavaScript IntersectionObserver.
Кейс: корпоративный интернет-магазин, 15 000 SKU
Проект на Битрикс «Бизнес», PostgreSQL, VPS 4 CPU / 8 GB RAM. До оптимизации: PageSpeed Mobile — 22/100, TTFB — 1,4 с, LCP — 5,8 с. Жалобы клиентов на медленную загрузку каталога.
Аудит выявил:
- 4 компонента с
CACHE_TYPE = Nна главной (оставлены разработчиком при дебаге) - N+1 в компоненте «похожие товары» — 48 запросов на страницу товара
- Агенты в веб-режиме, 11 агентов выполнялись синхронно
- 94 HTTP-запроса на главной (CSS/JS не объединены)
- Изображения в JPEG без WebP, средний размер 340 KB
Последовательность работ:
- Исправление кеширования компонентов → TTFB 1,4 с → 380 мс
- Оптимизация N+1, перевод на D7 API → запросов на страницу товара: 48 → 6
- Перевод агентов на cron → убрали 80–200 мс латентность
- Объединение CSS/JS → HTTP-запросов: 94 → 18
- WebP через
CFile::ResizeImageGet()+ lazy load → средний вес страницы: 2,8 MB → 680 KB - Настройка композитного режима для каталога и главной
Итог: PageSpeed Mobile 71/100, TTFB 180 мс, LCP 2,1 с. Конверсия мобильного трафика выросла — пользователи перестали уходить с медленных страниц каталога.
Инструменты для самодиагностики
До обращения к специалистам можно самостоятельно проверить:
-
/bitrix/admin/perfmon_panel.php— встроенная панель производительности Битрикс - MySQL slow query log (
long_query_time = 1) — медленные запросы - Chrome DevTools → Lighthouse — общая картина по фронтенду
-
php artisanаналог в Битрикс —php bitrix/modules/main/tools/cron_events.phpдля проверки агентов
Этапы и сроки
Работа разбивается на аудит и устранение проблем по приоритетам:
| Этап | Содержание | Срок |
|---|---|---|
| Аудит | Анализ TTFB, запросов, кеша, фронтенда | 1–2 дня |
| Серверная оптимизация | Кеш, запросы, агенты, композит | 3–7 дней |
| Фронтенд-оптимизация | CSS/JS, изображения, lazy load | 2–5 дней |
| Тестирование и мониторинг | Нагрузочные тесты, настройка метрик | 1–2 дня |
Сроки зависят от объёма кастомного кода и количества выявленных проблем.







