Настройка автокеширования компонентов 1С-Битрикс
Автокеширование в Битрикс — встроенный механизм компонентной системы, при котором результат работы компонента (HTML или данные) сохраняется в файловый кеш и используется при повторных запросах. В правильно настроенном проекте 70–90% обращений к компонентам обрабатываются из кеша без запросов к БД. В типичном legacy-проекте без должного внимания к кешированию картина противоположная.
Параметры кеширования компонента
Каждый компонент в Битрикс принимает параметры кеша через массив настроек:
$APPLICATION->IncludeComponent(
"bitrix:news.list",
".default",
[
"CACHE_TYPE" => "A", // A - авто, N - нет, Y - всегда
"CACHE_TIME" => 3600, // TTL в секундах
"CACHE_FILTER" => "N", // учитывать параметры фильтра в ключе кеша
"CACHE_GROUPS" => "N", // учитывать группы пользователя
]
);
CACHE_TYPE = A («авто») означает использование глобальной настройки кеша сайта. Если в настройках включён режим «без кеша» (например, в целях отладки), все компоненты с CACHE_TYPE = A перестают кешировать результат. Это первая вещь, которую проверяем при аудите производительности.
Ключ кеша и его состав
Битрикс формирует ключ кеша из параметров компонента, URL и дополнительных переменных. Проблема возникает, когда в ключ попадают лишние данные: идентификатор сессии, случайные GET-параметры от UTM-меток (utm_source, utm_campaign), параметры пагинации.
Компонент с CACHE_FILTER = Y будет создавать отдельный кеш для каждой комбинации GET-параметров — при UTM-трафике кеш никогда не будет использоваться повторно. Решение: настройка CACHE_FILTER = N с явной передачей только значимых параметров в arAdditionalCacheId, либо фильтрация UTM-параметров на уровне nginx до передачи запроса в PHP.
Кеш групп пользователей
Параметр CACHE_GROUPS = Y создаёт отдельный кеш для каждой группы пользователей. Это нужно для компонентов с контентом, зависящим от прав. Но для публичного каталога или новостей CACHE_GROUPS = Y умножает количество записей в кеше на количество групп пользователей. На проектах с 20+ группами (партнёры, оптовики, менеджеры и т.д.) это приводит к тому, что кеш никогда не «прогревается» до состояния, когда он реально используется.
Кейс: отключённое кеширование в продакшне
Сайт производственной компании на Битрикс «Стандарт». Жалоба: сайт работал быстро, после обновления шаблона всё стало медленным. Аудит через панель производительности показал: все компоненты работают без кеша. Причина — разработчик для удобства отладки установил в bitrix/php_interface/dbconn.php константу BX_CACHE_TYPE в значение N и забыл убрать. Одна строка кода — и весь сайт работает без кеширования. Устранение заняло 15 минут, TTFB вернулся к норме.
Инвалидация кеша компонентов
Кеш компонента автоматически инвалидируется при изменении данных инфоблока, к которому он привязан, через теги вида IBLOCK_N_ELEMENTS. Для кастомных компонентов, работающих с собственными таблицами, инвалидацию нужно реализовывать явно через BXClearCache() или \Bitrix\Main\Application::getInstance()->getTaggedCache()->clearByTag().
Настройка автокеширования — это ревизия параметров всех компонентов на сайте, выявление некорректных ключей кеша и настройка правильных TTL. Срок: 1–2 дня для проекта среднего размера (20–50 компонентов на страницах).







