Налаштування керованого кешу 1С-Бітрікс
Керований кеш (managed cache) у Бітрікс — механізм тегованого кешування, при якому кожен кешований об'єкт позначається тегами, а скидання відбувається за тегом, а не за TTL. Це вирішує головну проблему стандартного файлового кешу: коли в інфоблоці з 10 000 елементів оновлюється один запис, скидається весь кеш інфоблоку — всі компоненти, що використовують його дані, починають працювати «з нуля».
Як влаштований керований кеш
Клас \Bitrix\Main\Data\ManagedCache працює поверх сховища — за замовчуванням це memcached або Redis (налаштовується в /bitrix/.settings.php). Теги зберігаються окремо від даних: кожен тег — це версійний лічильник. При інвалідації тега лічильник збільшується, всі записи з застарілою версією тега вважаються невалідними.
Приклад використання в компоненті:
$managedCache = Application::getInstance()->getManagedCache();
$cacheTag = 'iblock_id_' . $ibId;
if ($managedCache->read(3600, 'my_cache_key', $cacheTag)) {
$result = $managedCache->get('my_cache_key');
} else {
$result = /* важкий запит */;
$managedCache->set('my_cache_key', $result);
$managedCache->registerTag($cacheTag);
}
При виклику \Bitrix\Main\TaggedCache::clearByTag('iblock_id_5') скидаються лише дані, позначені цим тегом — решта компонентів продовжують працювати з кешу.
Налаштування Redis як бекенду
Для продакшну рекомендується Redis — він швидший за memcached при роботі з тегами та підтримує персистентність. Конфігурація в /bitrix/.settings.php:
'cache' => [
'value' => [
'type' => [
'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis',
'extension' => 'redis',
],
'sid' => 'mysite',
'host' => '127.0.0.1',
'port' => 6379,
'serializer' => Redis::SERIALIZER_IGBINARY,
],
],
Параметр serializer => IGBINARY важливий: він знижує розмір серіалізованих PHP-об'єктів на 30–50% порівняно зі стандартним serialize().
Кейс: інвалідація кешу при частих оновленнях
Інтернет-магазин з погодинним обміном з 1С: щогодини оновлюються ціни та залишки 500–2000 позицій. При стандартному кеші з тегом IBLOCK_N весь кеш інфоблоку скидався 24 рази на добу. Після переходу на керований кеш з гранулярними тегами виду iblock_element_ID скидання відбувається лише для змінених елементів. Сторінки незмінених товарів продовжують віддаватися з кешу.
Що потрібно налаштувати
Правильне налаштування керованого кешу включає: вибір і конфігурацію бекенду (Redis/memcached), перевірку версії Бітрікс (D7 API, модуль main версії 20+), ревізію компонентів на використання застарілого CBitrixComponent::getCache(), перехід на ManagedCache там, де потрібна гранулярна інвалідація. Термін робіт — 1–3 дні залежно від кількості компонентів і наявності Redis на сервері.







