Кеширование и композитный режим в 1С-Битрикс: как настроить и не потерять скорость сайта
После включения композита сайт стал быстрее, но покупатель увидел чужую корзину или старую цену. Тут проблема не в самой идее кеша: в статическую часть попали данные, которые меняются для каждого пользователя.
Сначала измерьте, где именно тратится время: в запросах к базе, работе компонентов или генерации HTML. Затем на тестовой копии отделите общую часть страницы от цены, остатка, корзины и личного кабинета. Приёмка включает две проверки сразу: скорость и правильность данных для разных посетителей.
Кеширование ускоряет сайт, когда повторно использует уже рассчитанный результат. Композитный режим решает более узкую задачу: сохраняет статическую часть готовой HTML-страницы и отдельно загружает динамические области. Эти механизмы дополняют друг друга, но не заменяют диагностику медленного PHP-кода, SQL или внешнего сервиса.
Главный критерий хорошей настройки — сайт становится быстрее и при этом продолжает показывать правильные цены, остатки, корзину, авторизацию и контент для разных групп пользователей.
Какие виды кеша есть в Bitrix Framework

Кеш компонентов
Компонент может сохранять результат выборки и формирования данных на заданное время. Такой кеш полезен для меню, списков, каталога и других повторяемых блоков. Он работает корректно только тогда, когда ключ кеша учитывает параметры, от которых зависит результат: раздел, сортировку, язык, сайт, группу пользователя и другие значимые условия.
Управляемый кеш
Управляемый кеш связывает запись с изменением данных. Официальная документация Bitrix Framework уточняет: автоматический сброс работает в тех сценариях, где система знает связь кеша с таблицей. Если разработчик создал запись без такой связи, её приходится очищать явно или ждать окончания TTL [1].
Кеш данных приложения
Разработчик может кешировать результат сложного расчёта или обращения к API. Здесь он сам отвечает за состав ключа, срок жизни и инвалидирование. Ошибка в одном из трёх элементов способна смешать данные пользователей или надолго оставить устаревший результат.
Композитный сайт
Композит делит страницу на статичную и динамическую части. При повторном посещении готовая статичная часть отдаётся из кеша, а динамические области обновляются отдельно [1]. Это хорошо подходит для публичных страниц каталога и контента, но требует особого внимания к персонализированным блокам.
Что кешировать, а что оставить динамическим
В публичной части обычно безопаснее начинать с контента, одинакового для большинства посетителей: текстов, изображений, навигации, общих списков и неперсонализированного каталога. Динамическими оставляют данные, которые зависят от пользователя или меняются в процессе покупки.

Документация 1С-Битрикс прямо рекомендует не кешировать композитом поиск, корзину и оформление заказа [2]. На практике к зоне повышенного внимания также относятся:
- персональные цены и скидки;
- остатки по складам и доступность доставки;
- валюта, регион и выбранный город;
- имя пользователя, избранное и сравнение;
- купон, состав корзины и итоговая сумма;
- служебные сообщения после отправки формы.
Это не означает, что всю страницу нужно исключить. Часто достаточно правильно выделить динамический фрагмент и проверить его для всех значимых состояний.
Как выбрать режим композита
Автокомпозит быстрее включить на типовом проекте, но его результат всё равно проверяют на реальных компонентах и пользовательских сценариях. Ручная адаптация требуется, когда шаблон сильно изменён, компоненты используют нестандартный JavaScript или персональные данные встроены в общий HTML.
В ручном режиме разработчик управляет динамическими областями и их заглушками. Ошибка может проявиться не на первом открытии, а только на повторном визите, после авторизации или при переходе между страницами. Поэтому решение принимают по результатам тестов, а не по отметке «Композит включён» в административной панели.
Порядок безопасной настройки

1. Снять исходные показатели
До изменения измеряют время ответа и отрисовки нескольких шаблонов: главной, категории, карточки товара, поиска, корзины и оформления. Отдельно проверяют первый запрос, повторный запрос и страницу после очистки кеша.
2. Проверить обычное кеширование компонентов
Композит не исправит компонент, который на каждом динамическом запросе делает десятки одинаковых выборок. Сначала проверяют режимы кеширования, параметры ключа и причины частых сбросов. Монитор производительности 1С-Битрикс умеет вести журнал кеширования и SQL на ограниченный период [3].
3. Включить композит на тестовой копии
Настройки выполняют через административный раздел. Файл /bitrix/html_pages/.config.php вручную не редактируют: документация предупреждает, что интерфейс перезапишет такие изменения [2]. Если статические страницы должен напрямую отдавать NGINX, используют конфигурацию, соответствующую текущему окружению и версии Битрикс [4].
4. Настроить исключения и группы
Композит применяется только к выбранным группам. Пользователь, состоящий одновременно в нескольких группах, должен соответствовать правилам целиком. Администраторы с панелью управления не должны попадать в кешируемую группу: кеширование административной панели указывает на неверную настройку [2].
5. Проверить динамические зоны
Для каждого сценария выполняют последовательность, а не единичный просмотр: открыть карточку, сменить предложение, добавить товар, перейти в корзину, применить купон, авторизоваться, вернуться назад, изменить количество, оформить тестовый заказ. Затем повторяют с другим пользователем и в приватном окне.
Файлы, Redis и Memcached: как выбрать хранилище
Bitrix Framework поддерживает файловый кеш и хранилища в оперативной памяти, включая Redis и Memcache [1]. Переход в память не гарантирует ускорение сам по себе. Результат зависит от скорости диска, объёма кеша, сетевой задержки, числа процессов, частоты вытеснения записей и правильности идентификатора сайта.
Для нескольких сайтов важно разделять кеш через уникальный SID. При смене формата SID старый кеш очищают, иначе новая конфигурация его не использует [1]. Перед переключением хранилища проверяют доступность расширения PHP, лимит памяти, поведение при перезапуске и сценарий отказа сервиса кеша.
Частые ошибки
- Кеш включён, но постоянно сбрасывается. Ищут частые обновления, агентов и компоненты, голосующие против композита.
- На странице чужая цена или город. Персональный параметр не учтён в ключе либо блок ошибочно оставлен статичным.
- Корзина обновляется только после перезагрузки. Неверно адаптирована динамическая область или её JavaScript.
- После публикации видна старая информация. Нет связи кеша с изменяемыми данными или некорректно работает сброс.
- Прогретая главная быстрая, остальные страницы медленные. Проверялся один удачный URL, а не набор шаблонов и состояний.
Для отладки у композита есть отдельный журнал. Он показывает причины, по которым страница не создала кеш: запрет компонента, неверный домен, параметры URL, Ajax-запрос, административную панель и другие условия [2].

Как принять результат
После настройки фиксируют перечень кешируемых страниц и динамических зон, правила инвалидирования, выбранное хранилище и исключения. В проверку включают анонимного и авторизованного пользователя, разные группы цен, регион, мобильную версию, поиск, корзину и заказ.
Скорость сравнивают на одинаковых URL и одинаковом состоянии кеша. Помимо времени ответа контролируют ошибки, свежесть данных и нагрузку при одновременных запросах. Только такой результат показывает, что кеш действительно помогает сайту, а не скрывает ошибку до следующего обновления каталога.
Источники
[1] Bitrix Framework — кеширование: docs.1c-bitrix.ru/pages/performance/caching.html
[2] Bitrix Framework — Композитный сайт: docs.1c-bitrix.ru/pages/performance/composite-site.html
[3] 1С-Битрикс — настройки Монитора производительности: dev.1c-bitrix.ru/user_help/settings/perfmon/settings.php
[4] 1С-Битрикс: Веб-окружение — настройка NGINX для композита: dev.1c-bitrix.ru/learning/course/?COURSE_ID=37&CHAPTER_ID=08863