yii的缓存的应用

原理:页面缓存指的是缓存整个页面的内容, 页面缓存可以被看作 片段缓存 一个特殊情况。如果想要缓存整个页面,我们应该跳过产生页面的内容的动作执行。我们可以使用COutputCache作为动作 过滤器来完成这一任务

 

具体做法:

首先在config/main.php配置缓存

      'cache'=>array(

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

因为COutputCache继承CFilterWidget所以可以无需

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

 

整页面缓存需要在控制器中开始filters动作

  public function filters(){

    return array('accessControl',

        array(

        'COutputCache+index ',//缓存策略

        'duration' => 86400,//缓存多少秒

        'varyBySession' => true,//缓存模式

        )

    );

  }

这样就实现的页面缓存:

Index  action

Coutputcache的缓存模式有4

1.  varBySession 值: true  session_id 来区分key 

2.       varByRoute  值: controller/action 已控制器和动作来缓存数据

3.       varByParm 值: $_GET  get 数据来缓存数据,比如文章

4.       varyByExpression 值: 自定义PHP表达式

Yii的自带缓存都继承CCache 类, 在使用上基本没有区别  

缓存基础类 CCache 提供了两个最常用的方法:set() 和 get()。  

要在缓存中存储变量 $value,我们选择一个唯一 ID 并调用 set() 来存储它:  

Yii::app()->cache->set($id, $value);  

被缓存的数据会一直保留在缓存中,直到因一些缓存策略而被删除(比如缓存空间满了,删除最旧的数据)。要改变这一行为,我们还可以在调用 set() 时加一个过期参数,这样数据过一段时间就会自动从缓存中清除。  

  

// 在缓存中保留该值最多 30 秒  

Yii::app()->cache->set($id, $value, 30);  

  

当我们稍后需要访问该变量时(不管是不是同一 Web 请求),我们调用 get() (传入 ID)来从缓存中获取它。如果返回值为 false,说明该缓存不可用,需要我们重新生成它。  

$value=Yii::app()->cache->get($id);  

if($value===false)  

{  

    // 因为在缓存中没找到,重新生成 $value  

    // 再缓存一下以备下次使用  

    // Yii::app()->cache->set($id,$value);  

}  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/11207.html