Кэш — это наше всё. Ниже практический пример работы с кешем в Bitrix API на «голом» коде без компонентов.
Пример кода
$obCache = new CPHPCache;
$sCacheTime = 3600;
$sCacheID = $SectionView . "." . $iCountPageElement . "." . $sSort . '.' . CDBResult::NavStringForCache($iCountPageElement);
if ($obCache->InitCache($sCacheTime, $sCacheID, "/response/GetList/")) {
$vars = $obCache->GetVars();
return $vars['ARRAY'];
} else {
/*
* код по выборке элементов
*/
if ($obCache->StartDataCache()) {
$obCache->EndDataCache(array("ARRAY" => $arResultFieldValue));
return $arResultFieldValue;
}
}Ключевые параметры
$sCacheTime— время жизни кеша в секундах$sCacheID— уникальный идентификатор кеша; должен включать все параметры, влияющие на результат выборкиCDBResult::NavStringForCache()— добавляется к ID при использовании постраничной навигации"/response/GetList/"— директория хранения кеша относительно/bitrix/cache/
Важно
Если в $sCacheID передаётся ID пользователя, система создаст отдельную копию кеша для каждого пользователя. Это нужно учитывать при проектировании.
Очистка кеша
Для очистки используется функция BXClearCache(). Удобно вызывать её через событие при добавлении новых данных — например, при добавлении нового отзыва автоматически инвалидировать кеш списка отзывов.
