Налаштування автокешування компонентів 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування автокешування компонентів 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

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