Иногда бывает необходимо закэшировать какие-нибудь данные (а не html), например, результат работы логики компонента, т.е. массив $arResult. Ниже приведен пример использования средств кэширования 1С-Битрикс, имеющий следующие особенности:
- используется 1С-Битрикс-класс CPHPCache
- управление кэшированием ведется через стандартные параметры компонента CACHE_TYPE и CACHE_TIME (кэширование включается, когда тип кэширования установлен в "Авто+Управляемое", что соответствует значению 'A' в коде включения компонента)
- кэш зависит от всех параметров массива $_GET
- кэш хранится в папке /bitrix/cache/my_component_name/
$useCache = ($arParams["CACHE_TYPE"] == 'A');
$cacheValid = false;
if($useCache)
{
$cachedResult = new CPHPCache();
$cacheId = "";
foreach($_GET as $key => $val)
$cacheId.=$key.$val;
$cacheValid = $cachedResult->InitCache(intval($arParams["CACHE_TIME"]), $cacheId, "/my_component_name");
if($cacheValid)
$arResult = $cachedResult->GetVars();
}
if(!$useCache || !$cacheValid) // либо кэш отключен, либо нет действительного кэша
{
/*
* Тут заполняется массив $arResult и формируется флаг $success, равный true,
* если результат сформирован успешно или false, если возникла ошибка и кэшировать
* результат не имеет смысла
*/
if($success && $useCache)
{
// сохранить в кэше массив $arResult
$cachedResult->StartDataCache();
$cachedResult->EndDataCache($arResult);
}
}
Здравствуйте!
ОтветитьУдалитьИнтересует сотрудничество. Берете ли вы задачи на аутсорс?
Заранее спасибо!
Добрый вечер!
УдалитьСпасибо за предложение, но подработка меня на данный момент не интересует.