Zend Platform性能管理之动态内容缓存使用说明
时间:2006-11-30
来源:互联网
作为ZendPlatform中性能管理的强大组件,动态内容缓存能为大幅度地提高网站的性能。同时,为了更好地让这个组件发挥它的强大作用,在对文件做cache的时候,需要注意以下几个方面:
1、 cache的配置。
2、 如何对PHP文件做cache。
3、 PHP文件的cache条件。
4、 ZendPlatform API.
一、Cache的配置
图 1.1
图1.1列出的是动态内容缓存的配置选项。这里需要注意的是Maximum Cache Size这个配置选项,默认的设置是”unlimited”,这里建议是改为一个固定值,如上图设定的是1G。同时对“Minimum Free Diskspace”的设置是表示当磁盘空闲空间少于设定值时,不再进行cache操作,这个设置需要根据磁盘的具体应用而定。
图中最重要的设置是“Default Dynamic Caching Conditions”,这个设置表示对一个文件做cache的时候,默认的cache设置。具体的设置在下图中表示:
图 1.2
图1.2中列出了对PHP文件做cache的时候,cache的条件。包含了数据传输方式和参数值以及cache的条件,详细设置在PHP文件的cache条件中说明。二、如何对PHP文件做cache
对cache做了配置之后,如何对文件进行cache呢,或者在哪里对文件做cache呢?在Performance功能里的File view组件可以实现此项功能。 “File view”选项,列出了服务器各个域名的发布目录下的所有文件。在这里,我们可以对文件进行cache。默认的文件状态是加速状态。点击文件名前面的选项框,选中后点击列表顶部的cache按钮就可以完成对一个文件的cache。当然,可以对多个文件和文件目录做整体cache。只需要注意文件是否满足cache的默认设置要求。下图表示的是“File View”界面:
图 2.1
三、PHP文件的cache条件:
作为一门动态的web应用语言,PHP具备了许多种数据传递方式。比如GET、COOKIE、SESSION等都是数据交互的方式。当一个文件通过ZendPlatform的GUI界面被cache的时候,它的执行结果将会被保存在指定的缓存区,如果第二个访问该文件的请求到达时,ZendPlatform将根据cache条件进行判断,看时候需要重新执行文件。如果根据cache条件被缓存的文件已经达到访问的要求,ZendPlatform将直接把缓存区中该文件的执行结果返回给用户。所以cache的条件在cache处理的过程中,起到了至关重要的作用。
那么如何对不同的PHP文件进行cache的条件设置呢?在上一节介绍的“File View”选项中点击文件名将弹出cache条件的设置界面。如下图:
图3.1
图中列出了对PHP文件cache的时候,设置的条件选项。每一行的第一格表示数据传递的类型,第二个填入控制的变量名,第三个表示状态控制。下面就状态控制的选项进行说明:
选项 |
说明 |
备注 |
None |
当缓存中没有相应数据版本的时候,重新执行文件 |
|
Except |
除了指定的变量其他的变量变化时,重新执行文件 |
|
Exist |
当缓存中有相应的变量存在,重新执行文件 |
|
Not Exist |
当缓存中没有相应的变量存在,重新执行文件 |
|
Equal |
当缓存中有相应的变量存在并等于某值时,重新执行文件 |
|
Not Equal |
当缓存中有相应的变量存在并不等于某值时,重新执行文件 |
除了特殊的应用以外,在一般情况下建议使用默认的“None”设置。下面以COOKIE为例,介绍下对PHP文件做cache的条件控制。如下图所示:
图 3.2
图中列出了两个cache的条件,第一个是AllGET选项,表示当访问请求包含的变量包含新的值时重新执行文件,并保存到缓存区。第二个是COOKIE选项,图举例的是以“username”这个变量为cache条件,当cache中的cookie中的“username”变量出现新的值的时候,重新执行文件,并保存到缓存区。
四、ZendPlatform API:
ZendPlatform的GUI界面为用户提供的是“out-of-the-box”的功能,属于即装即用的功能,不需要对程序本身进行修改。同时,为了最大限度地发挥PHP的性能,ZendPlatform还提供的一系API编程接口。该API接口把cache的范围缩小到单个函数,以代替整个文件的输出。ZendPlatfrom的API是直接内嵌在PHP代码里面的,可以实现函数输出值或数据库访问值的缓存和缓存控制。最常见的ZendPlatform的API是数据缓存(Data Caching)使用数据缓存最大的应用是社区、论坛系统。
Data Caching数据缓存获取的是PHP或者用户定义的函数的执行结果,并以字符串的形式进行缓存。通过使用serialize和unserialize这两个函数你还可以对数列和对象进行缓存。对于直接产生文件输出的函数,我们不建议对它进行缓存,因为如果它被缓存了它将不会再被执行,从而导致文件没有输出。数据缓存中使用的函数包括output_cache_fetch, output_cache_put 和 output_cache_get。
为了更好地应用好Zend提供的API函数,这里提供了5条建议:
产生输出的循环,常见的产生内容的循环有<select>菜单中的选项,或者是数据库重新提取得网站新闻列表。
通常情况下,数据库的访问占用了绝大部分的时间。可以使用数据缓存方式实现数据库访问的缓存。但是这里要注意的是,数据库访问的返回结果只是数据地址,而并不是地址本身,所以在缓冲之前,需要对数据库的返回结果进行转换成真实数据的处理。
可以使用缓存段里面的ID里的变量来建立不同的代码执行的不同数据。比如,不同参数经过函数执行后返回的不同执行结果。
给不同的函数定义不同的cache周期。
可以实现不同代码之间,或者不同用户之间的文档或数据共享,在很多情况下,这个功能可以代替include文件。
举例说明数据缓存的使用。下面是一段PHP的代码,实现select菜单。
<?php
$forums = listForums();
put
// Generate a <select> tag from $forums
foreach ($forums as $forum)
{
echo "...";
}
?>
<?php $forums = unserialize(output_cache_fetch("ForumsList", "serialize(listForums())", 600));?>
如果在缓存中有“ForumsList”的数据,将直接从缓存中提取,从而绕过了执行程序并从数据库提取的环节。作者: carra 发布时间: 2006-11-30
作者: xiaojia 发布时间: 2006-12-01
作者: 水镜 发布时间: 2006-12-01
作者: PHPChina 发布时间: 2006-12-04
除了这些,hosander还在翻译Zend Platform的手册。
当然了,楼主我,也不能让大家白夸,Zend Platform的国外成功使用案例,Zend Platform FAQ我正在翻译中。
致力于推广国内PHP走向企业级应用

作者: carra 发布时间: 2006-12-06
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28