YII 页面缓存

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>




猜你喜欢

转载自blog.csdn.net/H_L_S/article/details/50779531
yii