Git Hub
коротко

Кеш в 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); // при автокеширование шаблон также кешируется за компанию
 }
Поделиться
Популярное