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







