Кеширование запросов в orm Битрикс

2k
Алексей,
Кеширование запросов в orm Битрикс

Удобная и полезная штука, можно быстро включить кеширование без каких-либо настроек.

Удобная и полезная штука, можно быстро включить кеширование без каких-либо настроек. Но включать надо с умом, например для длительных запросов которые повторяются часто. Иначе размер кеша может быть слишком большой.

Пример в orm

$obItems = \Bitrix\Iblock\Elements\ElementCatalogTable::query()
	->setFilter(['ACTIVE' => 'Y','NEW.ITEM.VALUE' => 'Да'])
	->setSelect(['ID', 'IBLOCK_ID', 'NAME', 'ACTIVE', 'SORT', 'NEW.ITEM'])
	->setCacheTtl(3600) // Включает кеш
	->cacheJoins(true) // Т.к. в запросе есть еще и таблица со свойствами, то включаем кеш с JOIN
	->fetchCollection();
foreach ($obItems as $obItem) {
	$arItem = $obItem->collectValues();
	$arItem['NEW'] = $arItem['NEW']->getItem()->collectValues();
}

Кеш в данном случае (при хранении в файлах) будет располагаться по адресу /bitrix/managed_cache/MYSQL/orm_b_iblock_element/* и будет сброшен (весь) при любой манипуляции с элементами таблицы.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 16 марта 2022
orm, кеш, примеры кода
Поделиться
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Удобная и полезная штука, можно быстро включить кеширование без каких-либо настроек.