转自http://i.laoer.com/tag/kohana
Kohana 里有个Cache Library,我今天就测试了一下。
首先要配置,将system/config下的cache.php复制到application/config下,打开cache.php文件,我们看一下内容
这是一个默认配置,’driver’为驱动的缓存方式,Kohana支持6种不同的驱动,分别是File、SQlite、Memcache、 APC、Eaccelerator、Xcache,配置文件默认使用的file,其原理是,写缓存时把对象序列化写入文件,读缓存时从文件读出文本反序列 化,所以在文件方式下,缓存是基于I/O的,在文件多而且大的时候,性能会有下降, ‘params’是驱动参数,在file驱动模式下,就是cache文件路径,’lifetime’是cache的生命周期,单位为秒,超过这个时间,内 容将被清除(设置为0代表不自动清除),’requests’为在达到请求数量之前自动垃圾回收。
在应用中,可能需要不止一个缓存,所以可以配置多个缓存,增加$config数组即可,还有在file方式下可以为每个缓存设置单独文件路径,但前提是文件路径要存在,例如我们增加一个
接下来我们在Controller里调用cache
Cache::instance(“my”)实例化配置里$config['my']的cache,如果用Cache::instance()就是 实例化配置里$config['default']的cache,在浏览器里执行,已经可以存取了,在application/cache/my/文件下 可以看到一个名为”name~~0″的文件,里面就是序列化的数据。
文件cache还是有一定的局限性,现在越来越的网站开始使用Memcached 所谓缓存的解决方案,Kohana的缓存驱动里,有Memcached的支持,但它的文档却没有给出Memcached的配置例子,看来要自己摸索一下。
将system/config下的cache_memcache.php复制到application/config下,cache_memcache.php的内容如下
根据你自己的情况修改Memcached的服务地址和端口,在application/config/cache.php里再加一段
在Controller里把Cache::instance(“my”)改为Cache::instance(“mem”),运行看看结果,已经可以从Memcahced里存取了。
Kohana的Memcached驱动还是有些缺陷,现在只能使用一组Memcached,即$config['servers']这个参数,我觉 得Memcacahed组也应该是多个,因为从业务角度会根据功能对cache做划分,我大概看了一下system/libraries/drivers /Cache/Memcache.php文件,应该是可以改造的,还有一点,编译PHP的时候要安装Memcached的支持。