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

73
Алексей,
Кеширование запросов в 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, кеш, примеры кода
Поделиться
Комментарии
Авторизуйтесь чтобы получать уведомления об ответе
Удобная и полезная штука, можно быстро включить кеширование без каких-либо настроек.