通过COutputCache定现整页缓存,文件缓存
1、修改在config文件加入缓存组件 'cache' => array ( 'class' => 'system.caching.CFileCache' ),2、在要做缓存的控制器里定义过滤器 我现在要定义SiteController public function filters() { return array ( array ( 'COutputCache + index, category, content', 'duration' => 3600, 'varyByParam' => array('id','page'), ) ); } // COutputCache 是用于处理缓存的类,如果只填'COutputCache',则该控制器里所有action都会进行缓存过滤,定义为'COutputCache+index,category,content',表示只缓存actionIndex, actionCategory, actionContent // duration 是缓存的时间,单位是秒,上例中定义的3600即1小时 // varyByParam 是指定一系列GET参数名称列表, 使用相应的值去确定缓存内容的版本,即同一个action用于区分是不同页面的的参数,此处我以id和page来区分不同页面,若我把page参数删掉,即写成 'varyByParam' => array('id'), 则以下两个页面采用同一缓存,导致翻页无效: // index.php?r=site/index&id=2&page=1 // index.php?r=site/index&id=2&page=2 // 除varyByParam以外,你还可以采用其他的条件来区分页面: // varyByExpression:指定是否缓存内容因承指定PHP表达式的结果而变化 // varyByRoute:指定缓存内容基于请求的路由不同而变化 (controller 和 action) // varyBySession:指定是否缓存内容. 因用户session不同而变化参考:http://www.yiiframework.com/doc/api/1.1/COutputCache http://www.yiichina.com/api/COutputCache?