博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zend_Cache 的基本用法
阅读量:3600 次
发布时间:2019-05-20

本文共 2300 字,大约阅读时间需要 7 分钟。

简单研究了一下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的缓存对象的创建及使用

[code]

<?php

$frontend = 'Core';

$frontendOptions = array(

    'caching' => true, //开启缓存,调试程序的时候可以设为false

    'lifetime' =&gt; 3600, //缓存生命期

    'automatic_serialization' =&gt; true //自动序列化,存储数组或者对象数据时一定要打开

);

$backend = 'File';

$backendOptions =&gt; array(

    'cache_dir' =&gt; '/tmp', //存放路径

    'file_name_prefix' =&gt; 'page_cache' //缓存文件前缀,默认为zend_cache

)

//实例化缓存对象

$coreCache = Zend_Cache::factroy($frontend, $backend, $frontendOptions, $backednOptions);

//如果命中id为news_list的缓存直接得到$newsList,未命中执行大括号内的代码

if (!$newsList = $coreCache-&gt;load('news_list')) {

    //查询数据库,得到$newsList

    //....省略

   

    //缓存$newslist至缓存,id为news_list

    $coreCache-&gt;save($newsList, 'news_list');  

}

?&gt;

[/code]

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

<?php

$frontend = 'Page';

$frontendOptions = array(

    'caching' => true, //开启缓存,调试程序的时候可以设为false

    'lifetime' =&gt; 3600, //缓存生命期

   

    //需要使用页面缓存的url匹配规则

    'regexps' =&gt; array(

       //首页的url匹配

        '^/(index|index/)?$' =&gt;array(

              'cache' =&gt; true,

              'cache_with_session_variables' =&gt; false, //如果存在session变量不缓存

              'cache_with_cookie_variables' =&gt; true, //如果存在cookie变量缓存

              'make_id_with_cookie_variables' =&gt; false //不使用cookie变量作为id的干扰码

        )

     )

);

$backend = 'File';

$backendOptions =&gt; array(

    'cache_dir' =&gt; '/tmp', //存放路径

    'file_name_prefix' =&gt; 'page_cache' //缓存文件前缀,默认为zend_cache

)

//实例化页面缓存对象

$pageCache = Zend_Cache::factroy($frontend, $backend, $frontendOptions, $backednOptions);

//如果命中缓存,直接输出缓存内容,并终止程序,后面的代码将不被执行,如果未命中,捕获输出并写入缓存。

$pageCache-&gt;start();

?&gt;

需要注意的是,如果用到页面缓存,为了最大程度提高执行效率,应将代码放到程序的最前面。减少不必要的文件包含及操作。

顺便提一句,Zend_Cache没有跟ZF其他组件耦合,所以也可以单独提取出来用于非ZF框架的程序。

转载地址:http://upjzn.baihongyu.com/

你可能感兴趣的文章
SpringAop两种代理模式-源码分析
查看>>
IDEA-自定义常用代码块
查看>>
JAVA多线程-JUC-8锁
查看>>
Vue-实现对象拷贝
查看>>
export 命令导出变量
查看>>
JAVA-快速接入第三方应用登录(QQ、微信、微博)
查看>>
解决Mysql-无法批量更新的问题
查看>>
Springboot-logback配色方案
查看>>
面试题-给定一个“flatten”Dictionary对象,根据键转换成嵌套字典对象
查看>>
Docker-ELK启动命令
查看>>
用cookies实现主题背景颜色切换,保存选择的颜色
查看>>
用 node.js 开启一个 http服务,返回文件或信息
查看>>
TypeScript 基础入门安装
查看>>
【git】warning: adding embedded git repository
查看>>
npm全局安装包的默认路径在哪里?
查看>>
git warning: LF will be replaced by CRLF in 解决办法
查看>>
python文件处理
查看>>
CentOS7制作本地yum源
查看>>
参考花书《深度学习》实现一个简易版PCA
查看>>
ConcurrentHashMap分析(二)数据扩容
查看>>