Доброй ночи.
Столкнулся с таким вопросом. Есть довольно тяжелая обработка сущностей на сайте на базе Yii.
Кратко опишу суть: есть товары, которые имеют настраиваемые модификации (как, например, телефоны 8Гб и 16Гб, только реально параметры могут быть разные + на один товар может быть несколько взаимосвязанных параметров и количество значений может отличаться).
Сейчас на товарах один вариативный параметр (в среднем у каждого товара есть 5-7 вариаций). Все это реализовано через EAV.
Проблема в том, что производительность не совсем устраивает. 1 страница категории = 17 товарам, что занимает 3,5-3,7 секунд на сервере. Профилировка кода и запросов показывает, что около 2-х секунд уходит на вызов типа (повторяется он 141 раз на одной странице):
$attribute = Attribute::model()->with('options')->findByAttributes(array('name'=>$attr));
Логика подсказывает использовать кэширование, пусть даже кратковременное, но добавление ->cache(120) ничего не дает. Боюсь чем дальше это пойдет (я имею ввиду несколько вариативных параметров на товар), тем будет хуже.
С какой стороны стоит зайти для решения этого вопроса?