Yii之路(第七)

8 篇文章 0 订阅
翻了翻Yii支持的缓存技术,还挺多的。
Apc缓存:
APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。
  系统缓存
它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存
缓存由用户在编写PHP代码时用apc_store和apc_fetch函数操作读取、写入的。如果数据量不大的话,可以一试。如果数据量大,使用类似memcache此类的更加专著的内存缓存方案会更好
 

我首先学习了文件缓存
 缓存分类:
    片段缓存
    页面缓存
    动态缓存 
    数据缓存 

 

我们试验的是文件缓存,缓存的信息在runtime存放

使用缓存步骤
1.在程序里面设置缓存
2.在主配置文件main.php里面配置缓存组件cache(在这个地方决定使用哪种缓存)






这是动态缓存吗?不是,可以说是智能缓存

缓存依赖:
   比如说我们的商品信息缓存可以自定义设置过期时间,根据具体需求业务类型决定,
如果商品信息在没有过期之内已经变化了(数据库更改),这时缓存文件还没有过期 ,
我们需要及时更新缓存文件(即使没有过期),以免误导用户,这种情况我们可以设置缓存依赖来实现。

 缓存依赖:
我们依赖的条件是总的商品价格,如果总价格发生变化,那么有可能是商品的信息有增加或者减少
的情况 ,还有可能是商品的价格被修改。
 




那么问题来了,一个商品的价格增加和一个商品减少的值相等。
就不会更新缓存了。那么怎么半呢?

Duration、varyByParam、dependency这几个属性在哪?

System.web.widgets.CoutputCache.php
这个图是Yii的渲染顺序: 



测试一个页面加载先后最好的办法是在要测试的页面加一个 microtime()时间戳。
又学到一招。 
 

页面缓存
是否可以?
有layout就不可以

是否可以对布局页面进行页面缓存
理论上不行,因为根据图来说  view先加载 layout后加载
所以说在用户访问控制实现页面缓存


利用filters过滤器设置缓存。


【数据缓存】
具体就是可以缓存变量信息
变量  缓存的使用

设置:Yii::app()->cache->set(名字,值,过期时间)
使用:Yii::app()->cache->get(名字);
删除:  Yii::app()->cache->delete(名字);
清空:  Yii::app()->cache->flush();

【动态缓存】
smarty

 


$this->beginCache();
中间有区域需要动态缓存
//回调函数就是控制器里面的普通方法
$this->renderDynamic(回调函数 )
$this->endCache();




这个 show_name()控制器要放入普通控制器父类里面,这样代码可以重复利用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值