Zend_Cache 的基本用法

来源:互联网 发布:36氪源码 编辑:程序博客网 时间:2024/06/05 18:41
简单研究了一下Zend_Cache的用法,特留存于此 Zend_Cache有两部分组成:前端后端,前端用于操作缓存,后端提供缓存的存储方式。 Zend_Cache的基本使用方式 一般使用工厂方式:Zend_Cache::factory()的创建缓存对象。 Zend_Cache::factory方法有四个参数: 前端类型,后端类型,前端参数,后端参数。 前端类型有:
  1. Core 这是前端的核心缓存,前端的其他类型缓存都继承自Core,缓存变量或数组就用到这个了。
  2. File 缓存文件,没有研究具体用途
  3. Output 捕获并缓存输出,这个做页面局部缓存很有用,个人认为缺点是需要在视图中写入相应的代码。
  4. Page 缓存页面,对提高效率帮助很大,因为一但命中缓存,就直接读取缓存并输出,不再执行后面的代码。可以设定session,cookie,get,post 作为产生cache_id的干扰码。比如不同的cookie产生不同的缓存页面。缺点是只能整个页面缓存,不能像smarty那样实现整页缓存,但是可以 控制局部不缓存。
  5. Class 缓存静态类和对象。
  6. Function 缓存函数。
后端类型有:
  1. APC
  2. File
  3. Memcached
  4. Sqlite
  5. Xcache
  6. ZendPlatform

一目了然,大部分人经常会用到的应该是是File和Memcached。 前端参数和后端参数,不同前后端类型有不同的参数,详情请查看官方手册 http://framework.zend.com/manual/en/zend.cache.frontends.html。 具体实例(数组缓存和页面缓存)

一.前端类型为Core, 后端类型File的缓存对象的创建及使用

<?php$frontend = 'Core';$frontendOptions = array(    'caching' => true, //开启缓存,调试程序的时候可以设为false    'lifetime' =>3600, //缓存生命期    'automatic_serialization' => true //自动序列化,存储数组或者对象数据时一定要打开);$backend = 'File';$backendOptions => array(    'cache_dir' => '/tmp', //存放路径    'file_name_prefix' =>'page_cache' //缓存文件前缀,默认为zend_cache)//实例化缓存对象$coreCache = Zend_Cache::factroy($frontend, $backend, $frontendOptions, $backednOptions);//如果命中id为news_list的缓存直接得到$newsList,未命中执行大括号内的代码if (!$newsList = $coreCache->load('news_list')) {    //查询数据库,得到$newsList    //....省略       //缓存$newslist至缓存,id为news_list    $coreCache->save($newsList, 'news_list');  }?>

二、前端类型为Page,后端依然为File的实例

<?php$frontend = 'Page';$frontendOptions = array(    'caching' => true, //开启缓存,调试程序的时候可以设为false    'lifetime' => 3600, //缓存生命期       //需要使用页面缓存的url匹配规则    'regexps' => array(       //首页的url匹配        '^/(index|index/)?' =>array(              'cache' => true,              'cache_with_session_variables' => false, //如果存在session变量不缓存              'cache_with_cookie_variables' => true, //如果存在cookie变量缓存              'make_id_with_cookie_variables' => false //不使用cookie变量作为id的干扰码        )     ));$backend = 'File';$backendOptions => array(    'cache_dir' => '/tmp', //存放路径    'file_name_prefix' => 'page_cache' //缓存文件前缀,默认为zend_cache)//实例化页面缓存对象$pageCache = Zend_Cache::factroy($frontend, $backend, $frontendOptions, $backednOptions);//如果命中缓存,直接输出缓存内容,并终止程序,后面的代码将不被执行,如果未命中,捕获输出并写入缓存。$pageCache->start();?>