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”的数据,将直接从缓存中提取,从而绕过了执行程序并从数据库提取的环节。
网友评论