YII 页面缓存的使用,通过COutputCache定现整页缓存,文件缓存

修改在config文件加入缓存组件

'cache' => array (
    'class' => 'system.caching.CFileCache'
),

在要做缓存的控制器里定义过滤器

我现在要定义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

若您觉得我的博文对您有帮助,欢迎点击下方按钮对我打赏
打赏