Инвалидация кеша
Инвалидация кеша выполняется по истечении времени жизни (TTL), вызовом методов программной очистки директорий (Cache::cleanDir()) или точечно по тегам через TaggedCache::clearByTag(). При массовом импорте элементов инфоблока обязательно отключают автоматический сброс тегов методами disableClearTagCache() и enableClearTagCache(), предотвращая деградацию базы из-за холодных стартов кеша.
Прогресс хранится в этом браузере. Войдите, чтобы сохранить его в аккаунте.
Что нужно понимать
-
1
Очистка по тегам
-
2
Очистка по времени
-
3
Программная очистка
Материалы
Официальная документация
Проверь себя
Менеджер после правки жмёт «Сбросить кеш» в панели, сам видит новое, а гости — старое. Почему?
Кнопка в панели чистит кеш компонента только для групп текущего пользователя, если компонент учитывает права. Кеш для гостей остаётся, его сбросит тег или очистка из кода.
Ночной импорт из 1С обновляет 50 тысяч товаров, и всю ночь база перегружена. При чём тут кеш?
Каждое сохранение элемента вызывает CIBlock::clearIblockTagCache(), который через clearByTag сбрасывает весь кеш инфоблока. На время импорта его выключают через CIBlock::disableClearTagCache() и сбрасывают тег один раз в конце.
Чем очистка по тегу отличается от Cache::clean() по ключу?
clean() удаляет одну запись по ключу и каталогу, и каталог должен совпасть с тем, что был в initCache(). Тег через b_cache_tag находит все каталоги, где регистрировался, и чистит их целиком через cleanDir().
Что сломается, если поставить всем компонентам TTL 60 секунд вместо тегов?
База будет пересобирать кеш каждую минуту под нагрузкой, а данные всё равно будут устаревать до минуты. Тег даёт долгий TTL и сброс в момент изменения.
Не сходится?
Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.
Знаете материал лучше?
Предложите ссылку: после проверки она появится в этом разделе.
Войти, чтобы предложить