Технология «Композитный сайт» — штатный ускоритель 1С-Битрикс, который отдаёт посетителю кэшированную статическую версию страницы почти мгновенно, а динамику подгружает следом. Правильно включённый композит ощутимо снижает время до первого экрана, но на плохо подготовленном каталоге он способен сломать корзину, цены и авторизацию. Разберёмся, как это устроено и в каких случаях включать технологию стоит, а в каких — рано.
Что такое композитный сайт
Композит — это способ разделить HTML-страницу на две части: статическую (шапка, меню, подвал, текст, разметка карточек — то, что одинаково для всех) и динамическую (корзина, имя пользователя, актуальные цены, персональные блоки). Статическая часть один раз генерируется движком и сохраняется как готовый HTML, а при следующих заходах отдаётся посетителю напрямую, минуя тяжёлый цикл сборки страницы в 1С-Битрикс.
Технически композит хранит готовый «слепок» страницы в кэше и умеет отдавать его двумя путями: из PHP-обработчика (bitrix/composite.php) или сразу с уровня веб-сервера / Битрикс-окружения. Динамические области после загрузки статики дозапрашиваются отдельным AJAX-запросом и вставляются на свои места. Для посетителя это выглядит так: страница появляется практически сразу, а через доли секунды в ней «оживают» корзина и персональные данные.
Как это работает под капотом
Ключевое понятие — динамические области. Всё, что помечено как динамическое, исключается из статического слепка и подставляется позже. Разработчик управляет этим через API composite: например, оборачивает блок вызовом CMain::AddBufferContent() с указанием, что содержимое динамическое, или помечает компонент параметром COMPOSITE_FRAME_MODE.
Стандартные компоненты Битрикса уже знают про композит. У большинства из них в настройках есть режим композитного кэширования (параметр вида Включить режим AJAX / Композит). Крупные динамические компоненты — sale.basket.basket.line (маленькая корзина), system.auth.form, персональные меню — переводятся в динамический режим, чтобы не попасть в общий для всех статический кэш.
- Первый заход: страница собирается полностью, движок формирует статический слепок и кладёт его в кэш.
- Повторные заходы: посетитель мгновенно получает статику, браузер тут же отправляет AJAX-запрос за динамикой.
- Инвалидация: при изменении контента слепок сбрасывается — по тегированному кэшу, по времени жизни или вручную.
Отсюда главное правило: всё персональное и изменяемое должно быть честно помечено как динамическое. Если этого не сделать, один пользователь увидит в статике чужую корзину или устаревшую цену.
Что реально ускоряется
Композит бьёт по метрике времени до первого содержательного отображения. Тяжёлый бэкенд Битрикса (пролог, инициализация модулей, сборка компонентов, запросы к БД) выполняется один раз при генерации слепка, а не на каждом хите. Посетитель получает готовый HTML за десятки миллисекунд.
| Показатель | Без композита | С композитом |
|---|---|---|
| Time To First Byte | формируется весь пролог и компоненты | отдаётся готовый слепок из кэша |
| First Contentful Paint | после полной генерации страницы | почти сразу после ответа сервера |
| Нагрузка на PHP/БД | на каждый запрос страницы | только при генерации слепка |
Важно понимать границы эффекта. Композит ускоряет доставку и первичный рендер, но не ускоряет саму динамику: корзина, оформление заказа, личный кабинет по-прежнему работают на живом бэкенде. И он не решает проблем с тяжёлым фронтендом — раздутый CSS/JS, невыполненный lazyload картинок и отсутствие CDN композит не лечит.
Когда включать стоит
Технология максимально полезна на страницах, которые часто открывают и которые одинаковы для большинства посетителей. В интернет-магазине это:
- главная страница и посадочные страницы;
- разделы каталога (списки товаров) с большим трафиком;
- карточки товара — при аккуратной пометке цены и кнопки «в корзину» как динамики;
- статические страницы: о компании, доставка, оплата, статьи блога.
Хороший индикатор — высокий и повторяющийся анонимный трафик из поиска и рекламы. Для таких визитов композит даёт максимум: посетитель без сессии получает мгновенную статику, а бэкенд не тратит ресурсы на каждый хит. Это же снижает пиковую нагрузку в акции и распродажи.
Когда включать рано или опасно
Композит — не кнопка «сделать быстро». На неподготовленном сайте он создаёт баги, которые сложно диагностировать, потому что проявляются они только у части посетителей.
- Сильно кастомизированный шаблон и самописные компоненты без поддержки динамических областей — сначала нужна доработка, потом композит.
- Много персонализации на странице: индивидуальные цены по группам, B2B-прайсы, региональность — всё это требует аккуратной разметки динамики.
- Формы и шаги оформления заказа: страницы с активным пользовательским взаимодействием кэшировать целиком не нужно.
- Низкий повторный трафик (нишевый B2B с авторизацией под каждого) — выигрыш от статики будет минимальным.
Практическое правило: сначала аудит шаблона и разметка динамических зон, затем включение на ограниченном наборе страниц и обязательная проверка под анонимным и авторизованным пользователем.
Подводные камни и как их обойти
Несколько типичных проблем, с которыми сталкиваются при внедрении композита в 1С-Битрикс:
- «Прыгающая» вёрстка — при подстановке динамики блоки меняют высоту. Лечится согласованием размеров статического плейсхолдера и итогового содержимого.
- Двойные счётчики и метрики — код аналитики может сработать и в статике, и после подгрузки динамики. Счётчики выносят в динамическую область или инициализируют через события композита.
- Устаревший кэш после правок — если контент обновился, а слепок не сброшен, посетитель видит старое. Настраивают тегированный кэш и корректную инвалидацию; при массовых правках слепки чистят вручную.
- Внешние GET-параметры (UTM, фильтры) — важно, чтобы разные варианты страницы не затирали кэш друг друга и не плодили бесконечное число слепков.
Проверять результат удобно через режим отладки композита и вкладку Network в браузере: сначала должен приходить статический HTML, затем — отдельный запрос за динамикой. Ответ сервера с готовой статикой обычно помечается служебным заголовком, по которому видно, что страница отдана из композитного кэша.
Итог
Композитный сайт — мощный штатный инструмент ускорения 1С-Битрикс для страниц с высоким повторяющимся трафиком: главной, каталога, карточек и статики. Он резко сокращает время до первого экрана и снимает нагрузку с бэкенда, но требует честной разметки динамических областей — иначе персональные данные утекут в общий кэш. Порядок правильный: сначала базовое кэширование и аудит шаблона, затем аккуратное включение и проверка под разными пользователями.
Если нужно внедрить композит без побочных эффектов и заодно разобраться с кэшем, CDN и Core Web Vitals — мы в B2Bsite настраиваем ускорение магазинов на Битрикс под ключ: размечаем динамику, тестируем корзину и цены, снимаем метрики до и после. В следующих статьях раздела разберём пошаговое включение композита и проверку его работы.
Частые вопросы
Композит ускоряет корзину и оформление заказа?
Нет. Корзина, оформление и личный кабинет остаются динамическими и работают на живом бэкенде. Композит ускоряет доставку и первичный рендер статической части страницы, а не сами интерактивные операции.
Не увидит ли один посетитель корзину или цену другого?
Такое происходит только когда персональные блоки не помечены как динамические и попадают в общий статический слепок. При корректной разметке динамических областей каждый пользователь получает свои данные отдельным AJAX-запросом.
Нужно ли включать базовое кэширование перед композитом?
Да, композит — это надстройка поверх кэширования компонентов и HTML-кэша. На сайте без настроенного кэша эффект будет слабее, а слепки будут чаще перегенерироваться.
Работает ли композит для авторизованных пользователей?
Да, но выигрыш меньше: чем больше персонализации на странице, тем больше её приходится отдавать динамикой. Максимальный эффект композит даёт на анонимном повторяющемся трафике из поиска и рекламы.
Подойдёт ли композит для сильно кастомного шаблона?
Только после доработки. Самописные компоненты и шаблоны без поддержки динамических областей нужно подготовить, иначе появятся баги с персональными данными и устаревшим контентом.
Как понять, что страница отдаётся из композитного кэша?
Во вкладке Network браузера видно, что сначала приходит готовый статический HTML, а затем отдельный запрос за динамикой. Ответ из композита обычно помечен служебным заголовком, а в панели можно включить отладочный режим технологии.
Что делать, если после правок посетители видят старый контент?
Настроить тегированный кэш и корректную инвалидацию слепков, чтобы при изменении данных кэш сбрасывался автоматически. При массовых правках композитные слепки можно очистить вручную.
Композит заменяет CDN и оптимизацию картинок?
Нет. Он ускоряет генерацию и отдачу HTML, но не решает проблем тяжёлого фронтенда. CDN, сжатие и объединение CSS/JS, lazyload и WebP настраиваются отдельно.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.