Simindey
5/21/2017 - 6:19 PM

Кеширование

Кеширование

# создаем объект
$obCache = new CPHPCache;
 
# время кеширования в секундах
$lifeTime = 30*60; 
 
# формируем идентификатор кеша в зависимости от всех параметров 
# которые могут повлиять на результирующий HTML
$cacheID = $arParams['ELEMENT_ID'].$arParams['SECTION_ID']; 
 
# если кеш есть и он ещё не истек то
if($obCache->InitCache($lifeTime, $cacheID, "/")){
    # получаем закешированные переменные
    $vars = $obCache->GetVars();
    $SECTION_TITLE = $vars["SECTION_TITLE"];
} else {
    # иначе обращаемся к базе
    $arSection = GetIBlockSection($arParams['SECTION_ID']);
    $SECTION_TITLE = $arSection["NAME"];
}
 
# добавляем пункт меню в навигационную цепочку
$APPLICATION->AddChainItem($SECTION_TITLE, $SECTION_URL."SECTION_ID=".$arParams['SECTION_ID']);
 
# начинаем буферизирование вывода
if($obCache->StartDataCache()){
 
    # выбираем из базы параметры элемента инфоблока
    if($arIBlockElement = GetIBlockElement($arParams['ELEMENT_ID'], $IBLOCK_TYPE)){
        echo "<pre>"; print_r($arIBlockElement); echo "</pre>";
    }
 
    # записываем предварительно буферизированный вывод в файл кеша
    # вместе с дополнительной переменной
    $obCache->EndDataCache(array(
        "SECTION_TITLE" => $SECTION_TITLE
        )); 
}