Zend_Cache提供了一个缓存任何数据的一般方法。
zf中的缓存由前端操作,同时通过后端适配器(File,Sqlite,Memcache...)和一个灵活的IDs和Tags系统存储缓存记录
模块(Zend_Cache_Core)是核心通用的
Core前端与File后端
我们通常写在配置文件里
application.ini配置文件
实例化Zend_Cache
;cachemanager
resources.cachemanager.default.frontend.name = Core
resources.cachemanager.default.frontend.options.lifetime = 7200
resources.cachemanager.default.frontend.options.automatic_serialization = true
resources.cachemanager.default.backend.name = File
resources.cachemanager.default.backend.options.lifetime = 7200
resources.cachemanager.default.backend.options.cache_dir = "data/cache"
application.ini文件
;cachemanager
resources.cachemanager.default.frontend.name = Core //选择Core前端 frontend.options为前端设置一个选项数组
resources.cachemanager.default.frontend.options.lifetime = 7200 //两个小时的缓存生命期
resources.cachemanager.default.frontend.options.automatic_serialization =true //automatic_serialization打开自动序列化
resources.cachemanager.default.backend.name = File //选择File后端 backend.options为后端设置一个选项数组
resources.cachemanager.default.backend.options.lifetime = 7200
resources.cachemanager.default.backend.options.cache_dir = APPLICATION_PATH."data/cache" //放缓存文件的目录
其实现在已经实例化Zend_Cache,其实例应该是default。这里的实例化我叫隐形实例化,
这里我们怎么获取实例呢
<?php
$cacheManager = new Zend_Controller_Action_Helper_Cache();
$default = $cacheManager->getCache("defalut");
?>
Zend_Controller_Action_Helper_Cache类文件包含Zend_Cache_Manager文件,这里的getCache('default')就是调用Zend_Cache_Manager类的方法
getCache("default")方法根据参数获得$default实例也就是Zend_Cache实例。$default就是Zend_Cache实例 Zend_Cache_Core类
这个类有一些关于缓存cache的操作方法,
比如生成缓存cache
<?php
$default->save($data, $cacheKey, array(),2592000); //$data是缓存的数据,$cacheKey是缓存的key值主要用来查看是否有缓存的,array()标记数组,是给缓存记录分类的一种方法,2592000是缓存过期时间。
?>
判断某个缓存是否存在
<?php
$status = $default->test($cacheKey); //$status boolean类型,false不存在,true存在
?>
查看某个缓存的数据信息
<?php
$data = $default->load($cacheKey); //load()方法 $data是缓存的数据信息
?>
删除特定的缓存
<?php
$default->remove($cacheKey); //根据$cacheKey来删除
?>
清除所有的缓存
<?php
$default->clean(Zend_Cache::CLEANING_MODE_ALL); //Zend_Cache::CLEANING_MODE_ALL
?>
清除过期的缓存
<?php
$default->clean(Zend_Cache::CLEANING_MODE_OLD); //Zend_Cache::CLEANING_MODE_OLD
?>
清除标记tagA和tagC的缓存项
<?php
$default->clean(Zend_Cache::CLEANING_MODE_MATCHIING_TAG, array('tagA', 'tagC')); //Zend_Cache::CLEANING_MODE_MATCHING_TAG
?>