Для того чтобы не кешировалась глобальная переменная в компоненте Битрикс, необходимо использовать функции работы с кэшем, предоставляемые самим Битрикс.
Сначала необходимо определить глобальную переменную и присвоить ей значение, например, в методе executeComponent() компонента. Например, для создания глобальной переменной $arResult['GLOBAL_VAR']:
$this->arResult['GLOBAL_VAR'] = 'Значение глобальной переменной';
Затем необходимо поместить эту переменную в кэш, используя функцию CMain::SetPageProperty() и метод SetResultCacheKeys():
/** @global CMain $APPLICATION */ $APPLICATION->SetPageProperty('global_var', $this->arResult['GLOBAL_VAR']); $this->SetResultCacheKeys(array('GLOBAL_VAR'));
Теперь необходимо добавить эту переменную в ключи кэша компонента с помощью метода SetResultCacheKeys(). Таким образом, при кешировании компонента Битрикс будет учитывать изменение данной переменной.
Наконец, в шаблоне компонента, где требуется вызов глобальной переменной без кэширования, можно использовать CMain::GetProperty(), которая вернет актуальное значение глобальной переменной, даже если компонент закеширован:
/** @global CMain $APPLICATION */ $globalVar = $APPLICATION->GetProperty('global_var');
При этом, если значение глобальной переменной изменится перед повторным кэшированием компонента, новое значение будет отображено в шаблоне.
Таким образом, использование функций работы с кэшем и задание ключей кэша позволяют избежать кэширования глобальных переменных в компоненте Битрикс и обновлять их значения при необходимости.