Налаштування керованого кеша 1С-Бітрікс
Уявіть: інтернет-магазин з каталогом на 50 000 товарів. Щогодини оновлюються ціни від 1С — і весь кеш скидається. Сервер падає під навантаженням, сторінки завантажуються по 10 секунд. Знайомий біль? Керований кеш (managed cache) вирішує це без капітальних вкладень. Ми налаштовуємо його під ключ на Redis або memcached — з гарантією результату. Наш досвід — понад 10 років і 50 успішних проектів у сфері Бітрікс. Ви отримуєте економію ресурсів сервера та прискорення роботи сайту в кілька разів без збільшення бюджету на хостинг.
Як керований кеш вирішує проблему продуктивності?
Керований кеш (\Bitrix\Main\Data\ManagedCache) працює за принципом тегів: кожен кешований об'єкт позначається унікальним ідентифікатором. При оновленні даних скидається лише той тег, а не весь інфоблок. Це дає приріст швидкості в 5–10 разів на сторінках, не зачеплених змінами.
Приклад з нашої практики: магазин з погодинним обміном 1С (500–2000 позицій) — після впровадження гранулярних тегів iblock_element_ID час завантаження сторінок впав з 8 секунд до 0,4. Кеш скидався лише для змінених товарів, а не для всього каталогу.
| Параметр | Стандартний файловий кеш | Керований кеш (Redis) |
|---|---|---|
| Механізм інвалідації | За TTL (час життя) | За тегами (точкове скидання) |
| Вплив оновлення 1С | Скидання всього інфоблоку | Скидання лише змінених елементів |
| Час відгуку сторінки | 3–10 сек при піку | 0,2–0,5 сек стабільно |
| Навантаження на сервер | Високе (часті регенерації) | Низьке (кеш живе довше) |
Що таке теговане кешування і як воно працює?
Теговане кешування — це підхід, при якому кожен кешований фрагмент даних асоціюється з одним або кількома тегами. Теги — це рядкові ідентифікатори, наприклад, iblock_id_5 або element_123. Коли відбуваються зміни (оновлення ціни, додавання товару), ви інвалідуєте лише відповідний тег, а не весь кеш. Це мінімізує повторне створення кеша та знижує навантаження на сервер.
Як влаштований керований кеш
Клас \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().
Докладніше про Redis читайте в офіційній документації, про теговане кешування — в вікіпедії.
Чому Redis кращий за memcached для керованого кеша?
Redis виграє за рахунок:
- Персистентність — дані не губляться при перезапуску (якщо увімкнена збереження на диск).
- Підтримка складних структур — теги зручно зберігати як хеші або сети.
- Вбудований igbinary — знижує розмір даних на 30–50%.
- Швидша інвалідація за тегами завдяки атомарним операціям.
Бенчмарки показують, що на Redis швидкість читання/запису тегів у 2-3 рази вища, ніж на memcached, особливо при великій кількості тегів (10 000+).
Як ми налаштовуємо керований кеш: покрокова інструкція
- Аудируємо поточний стан: перевіряємо версію Бітрікс, наявність модуля main 20+, виявляємо компоненти, які не використовують ManagedCache.
- Підбираємо бекенд: якщо на сервері вже є Redis — використовуємо його. Якщо ні — налаштовуємо Redis або пропонуємо memcached.
- Правимо .settings.php: вказуємо машину, порт, серіалізатор igbinary.
- Рефакторимо компоненти: замінюємо
getCache()наManagedCache, додаємо гранулярні теги за ID елементів, розділів, інфоблоків. - Тестуємо: навантажувальні тести, перевірка інвалідації, метрики.
- Документуємо: передаємо команді інструкцію з додавання нових компонентів.
Що входить у налаштування керованого кеша під ключ
| Етап | Що робимо | Результат |
|---|---|---|
| 1. Аналітика | Перевіряємо версію Бітрікс, наявність модуля main 20+, поточні компоненти | Звіт з рекомендаціями |
| 2. Налаштування бекенду | Встановлюємо та конфігуруємо Redis/memcached, правимо .settings.php | Робоче кеш-сховище |
| 3. Рефакторинг компонентів | Замінюємо CBitrixComponent::getCache() на ManagedCache, додаємо теги | Гранулярна інвалідація |
| 4. Тестування | Перевіряємо 50+ сторінок, імітуємо оновлення 1С | Метрики: TTFB, cache hit ratio |
| 5. Документація | Пишемо інструкцію з додавання нових компонентів | Передача знань команді |
Терміни та вартість
Термін налаштування — від 1 до 3 робочих днів залежно від кількості компонентів та готовності сервера (наявність Redis). Вартість розраховується індивідуально після аудиту — це безкоштовно. Просто зв'яжіться з нами, і ми надішлемо детальний кошторис.
Як уникнути типових помилок при налаштуванні?
Уважно перевіряйте реєстрацію тегів: кожен виклик set повинен супроводжуватися registerTag. Переконайтеся, що Redis налаштований на персистентність (save). Використовуйте теги не лише для елементів, але й для розділів, властивостей, метаданих. Навантажувальне тестування перед впровадженням обов'язкове — інакше ризикуєте отримати скидання кеша на піку.
Отримайте консультацію — ми допоможемо розібратися з вашим проектом. Зв'яжіться з нами для безкоштовного аудиту поточного кеша.







