Настройка композитного кеша 1С-Битрикс
Композитный режим — один из немногих инструментов Битрикс, способный снизить TTFB с 800 мс до 20–50 мс без изменения серверной инфраструктуры. Принцип: первый запрос к странице выполняется полностью (PHP + БД), результат сохраняется как статический HTML в /bitrix/cache/html/, последующие запросы отдаются напрямую из файла через nginx — PHP вообще не запускается. Динамические блоки (корзина, имя пользователя, остатки) заменяются AJAX-запросами после загрузки страницы.
Требования и предварительная настройка
Для работы композита необходимы:
- Лицензия «Бизнес» или выше (в «Старте» и «Стандарте» функция недоступна)
- Модуль
bitrix.composite(устанавливается из Маркетплейса, в старых версиях встроен) - Правильная конфигурация nginx для отдачи HTML-кеша без PHP
Конфигурация nginx — критический момент. Без неё композит работает «вполовину»: HTML сохраняется, но PHP всё равно вызывается для проверки кеша. Нужно добавить в блок server условие, которое проверяет наличие файла кеша и отдаёт его напрямую:
set $composite_cache "";
if (!-f $document_root/bitrix/cache/html/$host$request_uri/index.html) {
set $composite_cache "no";
}
if ($composite_cache = "") {
rewrite ^ /bitrix/cache/html/$host$request_uri/index.html last;
}
Точная конфигурация зависит от версии Битрикс и структуры сайта — официальная документация содержит несколько вариантов для разных схем URL.
Разметка динамических зон
Главная причина проблем с композитом — неправильная разметка динамических блоков. Всё, что не должно попасть в статический кеш, оборачивается тегом bitrix:nocache:
<?$APPLICATION->IncludeComponent("bitrix:sale.basket.basket", ".default",
array("CACHE_TYPE" => "N"), false);?>
Или в шаблоне компонента через $this->addExternalCSS и явные метки. В современных проектах динамические зоны выносятся в отдельные AJAX-эндпоинты и подгружаются через BX.ajax после загрузки страницы.
Типичные блоки, требующие nocache: корзина и счётчик товаров, блок авторизации / имя пользователя, виджеты сравнения, персонализированные рекомендации, остатки на складе если они меняются часто.
Кейс: новостной портал на Битрикс
Портал с посещаемостью 40 000 уников в сутки, преимущественно анонимные пользователи. TTFB на статьях — 650–900 мс, сервер под нагрузкой в пиковые часы. После настройки композита для страниц статей (динамический только блок «последние комментарии» через AJAX) TTFB упал до 15–30 мс. Нагрузка на PHP-FPM снизилась настолько, что потребовалось уменьшить количество воркеров — они простаивали.
Ограничения и антипаттерны
Композит не работает для авторизованных пользователей по умолчанию — для них всегда выполняется полный PHP-цикл. Есть режим персонализации (bitrix:composite.async), но он требует отдельной проработки. Также страницы с POST-параметрами и страницы из списка исключений (/personal/, /order/) кешируются.
Частая ошибка — включить композит глобально без разметки nocache в нужных местах. Результат: данные одного пользователя попадают в кеш и отображаются другому. Это обнаруживается не сразу и создаёт серьёзные проблемы с безопасностью.
Этапы настройки
Настройка занимает от 1 до 3 дней в зависимости от сложности шаблона и количества динамических блоков. Включает аудит компонентов на странице, настройку nginx, разметку nocache-зон, перевод динамических блоков на AJAX, тестирование под разными сценариями (анон, авторизованный, мобильный).







