Кеширование
# создаем объект
$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
));
}