Блог Загирова Рустама

Около-интернетные заметки

Yii: используем кэш в CActiveDataProvider

| Комментарии

Репост моей заметки из wiki: http://www.yiiframework.com/wiki/233/using-cache-in-cactivedataprovider/.

Первый параметр в конструкторе CActiveDataProvider может быть строковым значением с названием модели или экземпляр класса модели.

Поэтому можно использовать CActiveRecord::cache() для кэширования, но нужно установить значение 3 у третьего параметра, потому что мы должны закэшировать 2 запроса: получение количества записей и само получение записей.

Не забудьте использовать зависимости для принудительного протухания кэша.

1
2
3
4
5
6
7
8
9
10
11
$dependecy = new CDbCacheDependency('SELECT MAX(update_time) FROM {{post}}')

CActiveDataProvider(Post::model()->cache($duration, $dependecy, 2), array (
    'criteria' => array (
        'condition' => 'status = 1',
        'order' => 'DESC create_time',
    )
    'pagination' => array (
        'pageSize' => 20,
    )
));

Комментарии