Налаштування композитного кешу 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, тестування під різними сценаріями (анон, авторизований, мобільний).







