В новой записи я вам покажу основные методы для работы с кэшированием данных в Bitrix. Мы с вами рассмотрим как кэшировать данные, как проверять актуальность кэша, как удалаять и перезаписывать кэш файлы.
Как кэшировать данные в Bitrix компоненте
Для кэширования данных в самописном компоненте необходимо прописать код представленный ниже.
/* формируем уникальный ключ для названия файла кэша */
$cacheKey = serialize($arParams);
$cacheId = serialize($cacheKey . filemtime(__FILE__));
/* указываем название директории для кэша */
$cacheDir = '/site.search';
/* записываем экземпляр класса для работы с кэшем */
$cache = Bitrix\Main\Data\Cache::createInstance();
/* проверяем наличие и актуальность кэша */
if ($cache->initCache($this->cacheTime, $cacheId, $cacheDir)) {
/* если кэш актуален, берём данные из кэш файла */
$this->arResult = $cache->getVars();
} elseif ($cache->startDataCache()) {
$this->arResult = [];
/*
формируем arResult для кэширования
*/
$this->arResult = $arResult;
/* записываем данные в кэш */
$cache->endDataCache($this->arResult);
}
Проверить наличие и актуальность кэша в Bitrix
/* формируем уникальный ключ для названия файла кэша */
$cacheKey = serialize($arParams);
$cacheId = serialize($cacheKey . filemtime(__FILE__));
/* указываем название директории для кэша */
$cacheDir = '/site.search';
/* записываем экземпляр класса для работы с кэшем */
$cache = Bitrix\Main\Data\Cache::createInstance();
/* проверяем наличие и актуальность кэша */
if ($cache->initCache($this->cacheTime, $cacheId, $cacheDir)) {
/* если кэш актуален, берём данные из кэш файла */
$arResult = $cache->getVars();
}
Удалить кэш из определённой директории Bitrix
$cache = \Bitrix\Main\Data\Cache::createInstance();
$dataResult = $cache->cleanDir('/adeta.search.window');
Удалить весь кэш с Bitrix сайта
$cache = \Bitrix\Main\Data\Cache::createInstance();
$cache->cleanDir();