Yii 片段缓存

片段缓存:系统会自动判断是否存在对应的键是否存在缓存,如果存在,在对应的地方插入缓存,否则对内容进行缓存

1.config/main.php 配置

	'components'=>array(

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

选项参数:

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 返回值


3.基本模式:

<?php if($this->beginCache($id, array('duration'=>3600))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
4.嵌套模式:

<?php if($this->beginCache($id1)) { ?>
...外部被缓存内容...
    <?php if($this->beginCache($id2)) { ?>
    ...内部被缓存内容...
    <?php $this->endCache(); } ?>
...外部被缓存内容...
<?php $this->endCache(); } ?>

5.例子:

<html>
<head></head>
<body>
	<?php

		//renderDynamic  调用控制器中的方法,使缓存发生局部变化
		if($a=$this->beginCache('h',array('duration'=>3600,'varyByParam'=>array('id')))){
			echo "<div id='a1'>".$this->renderDynamic('show')."</div>";
			echo "<div id='a2'>".'a1a1a1'."</div>";
	?>
		
	<?php		
	<span style="white-space:pre">	</span>$this->endCache();
	}

	?>

</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值