Кеширование запросов в 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/* и будет сброшен (весь) при любой манипуляции с элементами таблицы.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.