Шпаргалка по Bitrix. Работа с кэшем — PROG-TIME

Шпаргалка по Bitrix. Работа с кэшем

22.05.2023
Содержание:

В новой записи я вам покажу основные методы для работы с кэшированием данных в 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();