168  /  328

Добавление своего тега к кешам компонентов

Просмотров: 1493 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 11.09.2015

При выполнении инструкций данного урока подразумевается, что у вас включено тегированное кеширование.

Способ 1

В тело компонента добавьте следующий код:

if ($this->StartResultCache(......))
{
   if (defined('BX_COMP_MANAGED_CACHE') && is_object($GLOBALS['CACHE_MANAGER']))
   {
            $GLOBALS['CACHE_MANAGER']->RegisterTag('my_custom_tag');   
   }

   // do something

   $this->IncludeComponentTemplate();
}
else
{
   $this->AbortResultCache();
}

Способ 2

В шаблон компонента (в result_modifier.php) добавьте следующий код:

<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

if (defined('BX_COMP_MANAGED_CACHE') && is_object($GLOBALS['CACHE_MANAGER']))
{
   $cp =& $this->__component;
   if (strlen($cp->getCachePath()))
   {      
      $GLOBALS['CACHE_MANAGER']->RegisterTag('my_custom_tag');
   }
}
?>

Чтобы сбросить все кеши, помеченные вашим тегом, выполните следующий код:

if (defined('BX_COMP_MANAGED_CACHE') && is_object($GLOBALS['CACHE_MANAGER']))
   $GLOBALS['CACHE_MANAGER']->ClearByTag('my_custom_tag');

Примечание: один и тот же кеш может быть помечен несколькими тегами. Например, если вы пометите своим тегом кеш компонента bitrix:news.list, то у кеша будет два тега: штатный "iblock_id_XX" и ваш "my_custom_tag". Соответственно, кеш будет сбрасываться и при добавлении/изменении элемента в инфоблоке XX (штатный функционал), и при сбросе кеша вручную через ClearByTag('my_custom_tag').


18
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии