Документация для разработчиков

StartDataCache

bool
CPHPCache::StartDataCache(
 int TTL = false,
 string uniq_str = false,
 mixed initdir = false,
 array vars = array(),
 string basedir = "cache"
)

Начинает буферизацию выводимого HTML, либо выводит содержимое кеша если он ещё не истек. Если файл кеша истек, то метод возвращает "true", в противном случае - "false". Нестатический метод.

В новом ядре имеет аналог: Bitrix\Main\Data\Cache::startDataCache.

Параметры

ПараметрОписание С версии
TTL Время жизни кеша в секундах.
Необязательный. По умолчанию - время жизни кеша предварительно заданное в методе InitCache.
uniq_str Уникальный идентификатор кеша. В этот идентификатор должны входить все параметры которые могут повлиять на результат исполнения кешируемого кода.
Необязательный. По умолчанию - уникальный идентификатор кеша предварительно заданный в методе CPHPCache::InitCache.
initdir Папка, в которой хранится кеш компонента, относительно /bitrix/cache/. Если значение - "/", то кеш будет действительным для всех каталогов сайта.
Необязательный. По умолчанию - имя каталога предварительно заданное в методе CPHPCache::InitCache.
3.2.9
vars Массив переменных, которые необходимо закешировать, вида:
array(
 "ИМЯ ПЕРЕМЕННОЙ 1" => "ЗНАЧЕНИЕ ПЕРЕМЕННОЙ 1", 
 "ИМЯ ПЕРЕМЕННОЙ 2" => "ЗНАЧЕНИЕ ПЕРЕМЕННОЙ 2", 
 ...)
Непосредственно запись переменных в файл кеша осуществляется методом CPHPCache::EndDataCache.
Необязательный. По умолчанию - пустой массив.
basedir Базовая директория кеша. По умолчанию равен cache, то есть все сохраняется в /BX_PERSONAL_ROOT/cache/, где BX_PERSONAL_ROOT по умолчанию равен bitrix.5.1.2

См. также

Примеры использования

<?
// создаем объект
$obCache = new CPHPCache; 

// время кеширования - 30 минут
$life_time = 30*60; 

// формируем идентификатор кеша в зависимости от всех параметров 
// которые могут повлиять на результирующий HTML
$cache_id = $ELEMENT_ID.$SECTION_ID.$USER->GetUserGroupString(); 

// если кеш есть и он ещё не истек, то
if($obCache->InitCache($life_time, $cache_id, "/") :
    // получаем закешированные переменные
    $vars = $obCache->GetVars();
    $SECTION_TITLE = $vars["SECTION_TITLE"];
else :
    // иначе обращаемся к базе
    $arSection = GetIBlockSection($SECTION_ID);
    $SECTION_TITLE = $arSection["NAME"];
endif;

// добавляем пункт меню в навигационную цепочку
$APPLICATION->AddChainItem($SECTION_TITLE, $SECTION_URL."SECTION_ID=".$SECTION_ID);

// начинаем буферизирование вывода
if($obCache->StartDataCache()):

    // выбираем из базы параметры элемента инфо-блока
    if($arIBlockElement = GetIBlockElement($ELEMENT_ID, $IBLOCK_TYPE)):
        echo "<pre>"; print_r($arIBlockElement); echo "</pre>";
    endif;

    // записываем предварительно буферизированный вывод в файл кеша
    // вместе с дополнительной переменной
    $obCache->EndDataCache(array(
        "SECTION_TITLE"    => $SECTION_TITLE
        )); 
endif;
?>


Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
© «Битрикс», 2001-2018, «1С-Битрикс», 2018
Наверх