缓存

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

在 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 来访问缓存组件。

Yii 提供多种缓存组件以便在不同的媒介上存储缓存数据。比如 CMemCache 组件封装了 PHP memcache 扩展,它使用内存作为存储缓存的媒介;CApcCache 组件封装了 PHP APC 扩展;CDbCache 组件在数据库里存储缓存数据。下面是各种缓存组件的简要说明:

提示: 因为所有这些缓存组件都从同一个基础类 CCache 扩展而来,不需要修改使用缓存的代码即可在不同的缓存组件之间切换。

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

接下来我们将阐述如何在这些级别上使用缓存。

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