1 заметка с тегом
Cache
Кеш в Bitrix
16 ноября 2015, 13:08
Вариант 1 (CPHPCache)
$cacheTime = 3600*24; // время кеширования $cacheID = $iblockCode.'/'.$sectionCode; $cachePath = '/menu'; $obCache = new \CPHPCache(); $bValidCache = $obCache->InitCache( $cacheTime, // задать ttl $cacheID, // cacheID $cachePath.'/'.$cacheID // и cachePath ); if($bValidCache)// Если кэш валиден { $arResult = $obCache->GetVars(); // Извлекаем данные из кэша } elseif( $obCache->StartDataCache() )// Если кэш невалиден { /* ------------- put to cache ------------------------------------------------ */ // вычисления $arResult["ELEMENTS"] = getElements(); // выполняем запросы к БД и заносим результаты в массив $arResult; $obCache->EndDataCache($arResult); // Пишем массив в кеш /* ------------- /put to cache ------------------------------------------------ */ }
Важно, чтобы $cacheID НЕ заканчивался слешем «/»
По-умолчанию кеш лежит в /bitrix/cache/
Шаблоны кеш-путей
- Шаблон кэш-пути для детальной страницы
сache/[iblockID]/[templateСomponentName]/[detail_elementID]
- Шаблон пути к списку элементов
cache/[iblockID]/[templateID]/[page_Num]
Вариант 2 (Встроенное автокеширование)
if ($this->startResultCache($this->cacheTime,$cacheID,$this->cachePath)){ // если кеш не валиден, делаем расчёты $arResult = getResultFromDB(); // выполняем запросы к БД и заносим результаты в массив $arResult; $this->arResult = $arResult; $this->includeComponentTemplate($this->page); // при автокеширование шаблон также кешируется за компанию }