一、Zend_Cache快速浏览
Zend_Cache 提供了一个缓存任何数据的一般方法.
在Zend Framework中缓存由前端操作,同时通过后端适配器(File, Sqlite, Memcache…)和 一个灵活的IDs和Tags系统(标识符和标记系统)存储缓存纪录.模块(Zend_Cache_Core) 的核心是通用,灵活和可配置.对于特定的需要,为了便捷,这里有一些继承自Zend_Cache_Core的前端: Output, File, Function 和 Class.
(1)调用 Zend_Cache::factory()取得一个前端
(2)将从数据库中查询出来的结果缓存起来
现在有了一个前端,可用缓存任何类型的数据了(开了序列化’serialization’).例如,能够缓存从昂贵的数据库查询中缓存一个结果.结果被缓存后,不再需要连接到数据库;数据直接在缓存中取回和反序列化.
(3)用Zend_Cache 输出前端缓存输出
通过加入条件逻辑,我们’mark up’(标记)那些希望缓存输出的段(sections),在start() 和 end()方法间封装这些section(这类似第一个例子,并且是缓存的核心策略). 在内部,像往常一样输出你的数据,当执行到end()方法时,所有之前的输出都被缓存.在下一次运行时,整个段(end()方法调用前的代码)将被跳过执行,直接从Cache中取回数据(只要缓存纪录是有效的).
小结:在使用Zend_Cache是特别要注意的Cache标识(传递给save()和start()的参数).它必须对于你所缓存的每个资源唯一,否则不相关的缓存纪录就会相互覆盖, 更糟的是,导致错误的显示结果.二、缓存原理
缓存原理:
在Zend_Cache中有三个关键概念.
一是用于标识缓存纪录的唯一标识符(一个字符串).
二是’lifeTime’指令,正如例子中所见, 它定义了缓存纪录的生命期(超过该值,缓存纪录被销毁).
第三个关键概念是条件执行,你的部分代码可用被跳过,以加速性能.前端函数(例如. Zend_Cache_Core::get())在缓存不命中时返回false,这使用户能处理if(){ … } 语句中的条件,包含代码中他们所要缓存(或者跳过)的部分,最后是否必须保存这些你曾经生成的块(例如: Zend_Cache_Core::save()).
注意:’缓存命中’是一个术语,它表示当一个缓存纪录发现可用,是有效的并且是 ‘fresh’的(换言之,就是还没有过期).’Cache miss’ 表示当在缓存中找不到需要的数据时,发生缓存不命中. 当一个Cache miss发生是,你必须生成你的数据,并使它被缓存.而对于缓存命中,后端自动透明地从Cache中取回缓存纪录.
ps:暂且,zend_cache先记录这么多,基本上zend_cache很容易用到,效果很理想!