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

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-2023, «1С-Битрикс», 2023