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