西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发php教程 → PHP开源框架Yii 缓存配置实例

PHP开源框架Yii 缓存配置实例

相关软件相关文章发表评论 来源:西西整理时间:2012/12/17 8:39:45字体大小:A-A+

作者:西西点击:16次评论:8次标签: PHP

  • 类型:源码相关大小:139.2M语言:中文 评分:10.0
  • 标签:
立即下载

作为PHP的开源框架,自然少不了对缓存的支持。Yii缓存可以在不同的级别使用。在最低级别,可用来缓存单个数据(数据缓存)。往上一级,我们缓存一个由视图脚本生成的页面片断(片段缓存)。在最高级别,可存储整个页面以便需要的时候直接从缓存读取。本文说明页面缓存的配置及实现效果;

实现分为2步;

1. 在config文件加入缓存组件.

    'cache' => array (

        'class' => 'system.caching.CFileCache',

         'directoryLevel' => 2,

    ),

class标识需要使用的缓存媒介,用途比较广的类型基本都有支持:

CMemCache: 使用 PHP memcache 扩展.

CApcCache: 使用 PHP APC 扩展.

CDbCache: 使用一张数据库表来存储缓存数据。

CFileCache: 使用文件来存储缓存数据。 特别适用于大块数据(例如页面)。

当然,yii也可以支持Redis,需要装一个插件:

http://www.yiibase.com/download/view/32.html

本文实例使用的是文件缓存,对于文件缓存,缓存到的位置为protected/runtime/;directoryLevel设置缓存文件的目录深度;如果缓存页面特别多,这个值需要设置大点,否则每个目录下的页面会很多;

2. 在要做缓存的控制器里定义过滤器。

   public function filters() {

            return array (

                array (

                    'COutputCache + post, list',

                    'duration' => 3600,

                    'varyByParam' => array('id','page'),

    'dependency' => array(

                    'class'=>'CDbCacheDependency',

                    'sql'=>'SELECT MAX(id) FROM me115_book',

                )

            );

        }

COutputCache 是用于处理缓存的类,如果只填'COutputCache',则控制器里所有action都会通过缓存过滤,定义'COutputCache + post, list',表示只对以下方法进行缓存:actionPost, actionList

duration 是缓存的时间,单位是秒,

varyByParam 是指定一系列GET参数名称列表, 使用相应的值去确定缓存内容的版本,即同一个action用于区分是不同页面的的参数,此处我以id和page来区分不同页面。

    除varyByParam以外,还可以采用其他的条件来区分页面:

    varyByExpression:指定缓存内容通过自定义的PHP表达式的结果而变化

    varyByRoute:指定缓存内容基于请求的路由不同而变化 (controller 和 action)

    varyBySession:指定是否缓存内容. 因用户session不同而变化

dependency'指定缓存失效依赖关系:可指定文件或数据库;本文采用的是数据库依赖CDbCacheDependency;

   本例指定的是数据库,通过数据表的某个值的变化来确定缓存是否失效。例如,如果在表中新增了一条me115_book记录,即使缓存才过了2分钟(<3600),仍然判断为失效,从而查询数据库,生成整个页面,再次缓存;

检查:

查看当前页面是否缓存,可以dump输出一个当前服务器时间,从而检查当前页面是否已缓存;

优化效果:

优化站点为一个博客站点(me115.com),除了DNS解析转接外,未进行任何优化,优化前的数据为:

首字节时间为842ms;

采用页面缓存之后的效果:

首字节时间为376ms;html生成的时间大大缩短,后台时间减少了一倍。

当然,通过本图可以看到整个站点的用时还是比较长,主要是在页面组件(css/js/图片)上的下载耗费了不少时间,后续将针对这方面进行前端优化;

    php源码
    (36)php源码
    php是英文超级文本预处理语言HypertextPreprocessor的缩写。php源码是一种网站搭建数据源码,支持html内嵌操作,通常用于网站平台的搭建。php源码上手简单,模板化强,可以直接将整套功能性系统代码嵌入到你的程序中来。本次为大家带来php源码资源整合,包含了各类服务器网站搭建源码,php源码教程软件以及一些功能性的扩展包资源。有相关php源码搭建使用需求的朋友们不妨试试吧!php源码功能优势:1、PHP是开放的源代码:所有的PH...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(8)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)