yii 缓存技术

---恢复内容开始---

yii缓存技术

闲来无事,研究下 yii缓存。

缓存是用于提升网站性能的一种即简单又有效的途径。通过存储相对静态的数据至缓存以备所需,我们可以省去生成这些数据的时间。

在 Yii 中使用缓存主要包括配置和访问缓存组件。如下的应用配置指定了一个使用两台缓存服务器的 memcache 缓存组件: 

array(
'components'=>array(
         'cache'=>array(
               'class'=>'system.caching.CMemCache',
               'servers'=>array(
               array(
                     'host'=>'server1',
                     'port'=>11211,
              'weight'=>60
            ),
           array(
            'host'=>'server2',
            ' port'=>11211,
            'weight'=>40
          ),                       ),     ),   ),

);

程序运行的时候可以通过 Yii::app()->cache 来访问缓存组件.

缓存可以在不同的级别使用。在最低级别,我们使用缓存来存储单个数据,比如一个变量,我们把它叫做 数据缓存。往上一级,我们缓存一个由视图脚本生成的页面片断。在最高级别,我们存储整个页面以便需要的时候直接从缓存读取。
接下来我们将阐述如何在这些级别上使用缓存。

注意: 按定义来讲,缓存是一个不稳定的存储媒介,它不保证缓存一定存在——不管该缓存是否过期。所以,不要使用缓存进行持久存储(比如,不要使用缓存来存储 SESSION 数据)。

数据缓存
数据缓存也就是在缓存中存储一些 PHP 变量,过一会再取出来。缓存基础类 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);
}

为一个要缓存的变量选择 ID 时,确保该 ID 在应用中是唯一的。不必保证 ID 在跨应用的情况下保证唯一,因为缓存组件有足够的智能来区分不同应用的缓存 ID。

要从缓存中删除一个缓存值,调用 delete();

要清空所有缓存,调用 flush()。调用 flush() 时要非常小心,因为它会把其它应用的缓存也清空

提示: 因为 CCache 实现了 ArrayAccess 接口,可以像数组一样使用缓存组件。例如:

 $cache=Yii::app()->cache;
 $cache['var1']=$value1; // 相当于: $cache->set('var1',$value1);
 $value2=$cache['var2']; // 相当于: $value2=$cache->get('var2');

 

 

---恢复内容结束---

posted @ 2014-03-17 15:51  小小——开心  阅读(234)  评论(0编辑  收藏  举报