《数据缓存(ZendCache).ppt》由会员分享,可在线阅读,更多相关《数据缓存(ZendCache).ppt(12页珍藏版)》请在三一办公上搜索。
1、第14章 数据缓存(Zend_Cache),缓存是指将一些数据存放在固定的载体(如Session、Cookie、文件或者数据库)中,在需要时再读出的这样一个过程。使用Zend Framework的Cache组件可以实现对于任何数据的缓存。在Zend_Cache中,缓存由前端与后端相互配合来完成整个缓存过程。本章将介绍,如何使用Zend_Cache组件来实现数据的缓存。,14.1 数据缓存简介,数据的缓存属于数据存储的一种。使用Zend_Cache组件中的各个子类及方法可以实现数据缓存的过程。在Zend Framework中缓存的数据由前端操作,然后通过后端的适配器(如File、Sqlite、M
2、emcache等)和一个灵活的标识符系统(IDs)以及标记系统(Tags)来存储缓存记录。数据采用这样存储方法的好处在于便于删除特定类型的记录(如删除某一特定标记或者特定ID的记录)。在Zend_Catch中,模块的核心(Zend_Cache_Core)是通用的,同时也很灵活并便于配置。为了完成特定的目的,只需要使用那些实现对Zend_Cache_Core继承的前端(如Output、File、Function以及Class)即可。,14.2 缓存实现原理,实现对数据的缓存,通常包括以下几步。1创建一个Zend_Cache实例2向缓存中写入数据3清除缓存数据,14.3 Zend_Cache前端,
3、在本章引言中已经介绍了,数据缓存的过程需要前端与后端相互配合才能完成。而Zend_Cache前端在整个数据缓存的过程中起到了缓存操作的作用。其中Zend_Cache_Core是前端的一个核心类,另外的类都是为了实现特定的目的而对该类的继承。本节将分别就这些Zend_Cache前端类做介绍。,14.3.1 Zend_Cache_Core,Zend_Cache_Core类是一个非常特别的类,该类是Zend_Cache前端模块的核心。同时该类又是通用的Zend_Cache缓存前端,其他的前端类都是对该类的继承。基于这个原因,该类所定义的方法与配置也可以在其他的Zend_Caceh前端类中使用。Zen
4、d_Cache_Core类的设置的值及其意义,,14.3.2 Zend_Cache_Frontend_Output,Zend_Cache_Frontend_Output是一个专门用于捕获输出内容的缓存前端。该前端将利用PHP中的输出缓存来捕获位于该类的start()方法与end()方法之间的所有内容。,14.3.3 Zend_Cache_Frontend_Function,该方法的各参数及其意义如下所示。$name$parameters$tags$specificLifetime使用该方法有两个作用:第一次使用该方法将把指定函数结果进行缓存;第二次以相同的参数使用该方法即读取出缓存中对应的函数
5、结果(笔者注:这种用法相当诡异!)。使用Zend_Cache_Frontend_Function类对于缓存那些有输出内容,或者有返回值的函数来说是相当方便的。,14.3.4 Zend_Cache_Frontend_Class,使用Zend_Cache_Frontend_Class类可以缓存指定对象中的方法的调用结果。该类的使用过程与其他类有所不同,共分为以下几个步骤。(1)创建一个自定义类(如果是引用系统统类,则省略此步)。(2)设置factory()方法的$frontendOptions数组,并定义。(3)使用Zend_Cache的factory()方法来创建Cache实例。(4)以Cach
6、e实例执行test类中定义的某个方法。首次执行方法将缓存相应内容,第二次以相同参数执行方法则为取出上次缓存内容。,14.3.5 Zend_Cache_Frontend_File,Zend_Cache_Frontend_File类是用于将文件内容进行缓存的一个前端类,该类通常被主文件调用。例如,可以将配置文件中的信息通过该类进行缓存,这样当需要使用配置时就不用每次打开配置文件了。该类与Zend_Cache_Frontend_Core类基本相同,不同之处在于使用Zend_Cache_Frontend_File类的factory()方法实例化对象时需要先定义$frontendOptions数组,并设
7、置array(master_file=filename)。其中的filename即为指定的主文件的文件名。,14.4 Zend_Cache后端,上一节介绍了Zend_Cache前端,本节继续介绍Zend_Cache的后端。Zend_Cache的后端主要负责如何对缓存数据进行保存。Zend Framework1.02版中的Zend_Cache_Backend包括Apc、File、Memcached、Sqlite和ZendPlatform等。本节将介绍其中最为常用的文件与Sqlite后端。,14.4.1 Zend_Cache_Backend_File,Zend_Cache_Backend_File是最为常用的一种后端,该后端将缓存数据保存到指定的文件中。前几节所介绍的实例均使用了Zend_Cache_Backend_File后端。从前几节实例的代码中也可以看出该后端是如何进行工作的,因此这里不再赘述。表14.2所示列出了常见的文件后端的配置项内容。,14.5 小结,本章介绍了Zend Framework中的Cache组件。其中包括核心组件Zend_Cache_Core与Zend_Cache的前端与后端。合理使用本章所介绍的数据缓存技术可以大大提高程序的执行效率。特别是在需要缓存的内容比较多,而且结构复杂时,通过缓存读取数据比打开并分析源数据更加方便快捷。,