Задать вопрос

Почему не инвалидируется тегированный кэш?

Использую тегированный кэш.
При создании допустим для каталога /x/data/iblock_9/elements/IBModel_getDict_80e1796b0123e67e2d61d642d7d02518 добавляю теги в том числе x_iblock_id_9_element_549864
5d979c200788d075152693.png

Мои события не сбрасывают кэш.
Выполняю уже буквально в командной строке PHP
global $CACHE_MANAGER;
$CACHE_MANAGER->ClearByTag('x_iblock_id_9_element_549864');

И все равно - запись в таблице остается, файл на диске остается, кэш продолжает использвоаться.

Сбрасываю кэш из админки целиком. Обновляю страницу. Кэш создается, но при этом уже не попадает в таблицу тегированного кэша. Т.е. я вижу что данные получаются из кэша. Я вижу каталог кэша на диске, но не вижу записей в таблице для данного пути (и для тегов которые ему соотвествуют).
Чищу еще раз. Обновляю и ... кэш вообще не создается. Еще пару раз F5 - появляется.
Смотрю таблицу - не тегированный.
Повторяю - в логе вижу как добавляются теги:
regtag:/x/data/iblock_9/elements/IBModel_getDict_e37b1f6c8fca86a080380103a838c138 --<pre>x_iblock_id_9_element_549864</pre>--><!-- regtag:/x/data/iblock_9/elements/IBModel_getDict_e37b1f6c8fca86a080380103a838c138 --<pre>x_iblock_id_9_element_549865</pre>--><!-- regtag:/x/data/iblock_9/elements/IBModel_getDict_e37b1f6c8fca86a080380103a838c138 --<pre>x_iblock_id_9_element_549866</pre>--><!-- regtag:/x/data/iblock_9/elements/IBModel_getDict_e37b1f6c8fca86a080380103a838c138 --<pre>x_iblock_id_9_element_549867</pre>-->

foreach ($arElms as $arElm) {
                        print ('<!-- regtag:'.$this->cDir.'/'.$cacheSubDir.'/'.$cacheKey.' --<pre>'.print_r('x_iblock_id_'.$this::IDIB.'_element_'.$arElm['ID'],true).'</pre>-->');
                        $CACHE_MANAGER->RegisterTag('x_iblock_id_'.$this::IDIB.'_element_'.$arElm['ID']);
                    }

Смотрю в таблицу - ПУСТО. Папка на диске ЕСТЬ!

Такое ощущение что методы RegisterTag и ClearByTag срабатывают случайным образом - то работают, то нет.

Куда копать?
  • Вопрос задан
  • 350 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
Suntechnic
@Suntechnic Автор вопроса
Сам спросил - сам отвечай:
Тегированный кэш не работает если константа BX_COMP_MANAGED_CACHE не установлена. Причем не работает именно тегирование, в том числе и очистка.

Т.е. никакой вызов StartTagCache не запускает тегированный кэш если не установлена константа BX_COMP_MANAGED_CACHE.

в dbconn.php или куда вам удобно:
define('BX_COMP_MANAGED_CACHE', true);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы