Diversia
@Diversia

Как правильно работать с кешем в Битрикс?

Подскажите пожалуйста, почему в компоненте при использовании конструкции:
if (!isset($arParams["CACHE_TIME"])) {
	$arParams["CACHE_TIME"] = 3600000;
}
if ($this->StartResultCache())

Кеш компонента разный для каждой группы пользователей? Как сделать кеш для всех групп одинаковый?
  • Вопрос задан
  • 755 просмотров
Решения вопроса 1
Diversia
@Diversia Автор вопроса
В техподдержке Битрикс подтвердили, что кеша будет всегда 2. Один для админа, второй для остальных пользователей.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза
При формировании ключа кеша используется arParams.

Вот цитата кода
файл /bitrix/modules/main/classes/general/component.php:
public function getCacheID($additionalCacheID = false)
{
	(...)

	$cacheID = $SITE_ID."|".$LANGUAGE_ID.($SITE_TEMPLATE_ID != "" ? "|".$SITE_TEMPLATE_ID:"")."|".$this->__name."|".$this->getTemplateName()."|";

	foreach($this->arParams as $k=>$v)
		if(strncmp("~", $k, 1))
			$cacheID .= ",".$k."=".serialize($v);

	(...)

	if ($additionalCacheID !== false)
		$cacheID .= "|".serialize($additionalCacheID);

	return $cacheID;
}


Как одно из предположений: у вас arParams разный для разных пользователей.
Попробуйте организовать вывод массива во время формирования ключа кеша (а лучше настройте xdebug и наступит вам счастье =)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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