Zend Platform之动态内容缓存使用说明

互联网 | 编辑: 董宇成 2007-01-27 00:00:00转载 返回原文

Zend Platform性能管理之动态内容缓存使用说明(1)

作为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

Zend Platform性能管理之动态内容缓存使用说明(2)

三、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”设置。下面以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菜单。

如果在缓存中有“ForumsList”的数据,将直接从缓存中提取,从而绕过了执行程序并从数据库提取的环节。

返回原文

本文导航

相关阅读

每日精选

点击查看更多

首页 手机 数码相机 笔记本 游戏 DIY硬件 硬件外设 办公中心 数字家电 平板电脑