Добрый день.
Осваиваю YII и сразу же после туториала столкнулся со странной реализацией dependency.
CCache сохраняет в кэш массив данных и классов ICacheDependency, а при извлечении из кэша данных по ключу сверяет данные методом из сохраненного ICacheDependency…
То есть при проверке наличия записи в кэше с помощью $this->beginCache(‘id’, $params) (второй вызов), $params не используются!
Поэтому нельзя сделать такое кэширования view, который вызывается из другого view:
<?php $this->beginCache(‘id’, array(
'dependency' => new CExpressionDependency("'". serialize($models) ."'")
)); ?>
…
То есть, было бы логично откэшировать данные view, который использутеся в renderPartial, на основе входных моделей view.
Но это невозможно из-за того, что при повторном вызове не используются зависимости из beginCache (которые сгенерировались новыми), а проверяются данные в CCacheDependency так $this->generateDependentData() != $this->_data.
Не понимаю почему так сделано? Как реализовать кэширование view по входным моделям?