Настройка автокеширования компонентов 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка автокеширования компонентов 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка автокеширования компонентов 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 компонентов на страницах).