Как правильно несколько раз вызывать функцию с кешом CPHPCache в 1С-Битрикс при clear_cache?

Добрый день,

Кеширую данные из БД 1С-Битрикс стандартным классом из коробки CPHPCache.
Простой процедурный подход.

function myCache()
{
	$obCache 	= new CPHPCache();
	$arResult 	= array();

	if($obCache->InitCache(36000000, 'myCache', '/myCache/'))
	{
		$vars = $obCache->GetVars();
		$arResult = $vars['arResult'];
	}
	elseif($obCache->StartDataCache())
	{
		/* запросы к бд */
		
		$obCache->EndDataCache(array('arResult' => $arResult));
	}
	return $arResult;
}


Данная функция "myCache" содержит параметры, которые применяются в других функциях для обработки данных. Т.е. myCache может вызываться 5-10-15 раз в разных местах.

Проблема возникает после того, как происходить сброс кеша "clear_cache=Y".
Обращение к БД происходит столько раз, сколько раз вызывается функция.

По идеи, при последующем обращении к функции "myCache" кеш должен был сброситься 1 раз, после отдавать данные из кеша. Но видимо наличие переменной "clear_cache=Y" полностью исключает создание кеша.

Есть ли способ избежать постоянного сброса кеша при присутствии get "clear_cache=Y"?
Создать класс и работать с "myCache" в рамках экземпляра вариант, но может есть другое решение...
  • Вопрос задан
  • 530 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вы похоже не понимаете зачем в битриксе переменная clear_cache. Это по сути гарантирует что на странице не будет использовать кеш. Зачем это обходить? Вы конечно можете сделать свой кеш и не реагировать на данную переменную, но тогда как вы будете его сбрасывать? Заведете свою переменную типа custom_clear_cache и что измениться кроме то что вы будете в последующем объяснять всем разработчикам, что вы придумали такой класный велосипед
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы