Кеширование SQL-запросов в Yii

$sql = 'SELECT * FROM tbl_post LIMIT 20'; // кешируем результат запроса 1000 секунд $rows = Yii::app()->db->cache(1000)->createCommand($sql)->queryAll();

Если данные в таблице меняются, можно попробовать инвалидировать кеш, используя менее затратный запрос:

$sql = 'SELECT * FROM tbl_post LIMIT 20'; // сбрасываем кеш, если результат изменился $dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post'); // кешируем на 1000 секунд $rows = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();

С AR это работает так:

$posts = Post::model()->cache(1000)->findAll(); $posts = Post::model()->cache(1000)->with('author')->findAll();