1.config/main.php 配置
</pre><pre name="code" class="php"> 'components'=>array(
'cache'=>array(
'class'=>'system.caching.CFileCache',
'directoryLevel' => 2,
),)
2.选项参数:
duration:缓存时间,默认60S
varyByParam:参数变化,如果GET中有参数 id 设置id值变化时,加载新缓存 varyByParam=>array('id');
dependency:依赖变化。根据数据库值的变化,判断是重新加载缓存:
'dependency'=>array(
'class'=>'system.caching.dependencies.CDbCacheDependency',
'sql'=>'SELECT max(fid) FROM tbl_group'
)
该设定,判断fid最大值是否发生变化。
'requestTypes:请求类型 'requestTypes'=>array('GET')
varyByExpression:指定缓存内容通过自定义的PHP表达式的结果而变化
varyByRoute:指定缓存内容基于请求的路由不同而变化 (controller 和 action)
varyBySession:指定是否缓存内容. 因用户session不同而变化
2.缓存局部变化 视图文件中调用 $this->renderDynamic(对应控制器中的方法) 注:方法以return 返回值
例子:
Controller:
public function filters(){//过滤
return array(
array(
'COutputCache + list,post',
'duration'=>60,
'varyByParam'=>array('id')
)
);
}
public function actionList(){
$this->renderPartial('list');
}}
COutputCache 是用于处理缓存的类,如果只填'COutputCache',则控制器里所有action都会通过缓存过滤,定义'COutputCache + post, list',表示只对以下方法进行缓存:actionPost, actionList
Views(list.php):
<html>
<head></head>
<body>
<?php
for($i=0;$i<100;$i++){
echo "<div>".$i."</div>";
}
?>
</body>
</html>