34.缓存

这里写图片描述

[php]
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),
            ),
        ),
    ),
);

这里写图片描述
这里写图片描述


数据缓存

先在配置文件components数组中加上:
'cache'=>array( 'class'=>'CFileCache'),

这里写图片描述

[php]
$value=Yii::app()->cache->get($id);
if($value===false)
{
    // 因为在缓存中没找到 $value ,重新生成它 ,
    // 并将它存入缓存以备以后使用:
    // Yii::app()->cache->set($id,$value);
}

这里写图片描述


缓存依赖
这里写图片描述

[php]
// 此值将在30秒后失效
// 也可能因依赖的文件发生了变化而更快失效
Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));

这里写图片描述


片段缓存(Fragment Caching)
这里写图片描述

[php]
...别的HTML内容...
<?php if($this->beginCache($id)) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...别的HTML内容...

在上面的,如果[beginCache()|CBaseController::beginCache()] 返回false,
缓存的内容将此地方自动插入; 否则,在if语句内的内容将被执行并在[endCache()|CBaseController::endCache()]触发时缓存。

这里写图片描述

[php]
...其他HTML内容...
<?php if($this->beginCache($id, array('duration'=>3600))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...其他HTML内容...

这里写图片描述

[php]
...其他HTML内容...
<?php if($this->beginCache($id, array('dependency'=>array(
        'class'=>'system.caching.dependencies.CDbCacheDependency',
        'sql'=>'SELECT MAX(lastModified) FROM Post')))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...其他HTML内容...

这里写图片描述

[php]
...其他HTML内容...
<?php if($this->beginCache($id, array('requestTypes'=>array('GET')))) { ?>
...被缓存的内容...
<?php $this->endCache(); } ?>
...其他HTML内容...

这里写图片描述


页面缓存
这里写图片描述

[php]
public function filters()
{
    return array(
        array(
            'COutputCache',
            'duration'=>100,
            'varyByParam'=>array('id'),
        ),
    );
}

这里写图片描述


动态内容(Dynamic Content)
这里写图片描述

[php]
...别的HTML内容...
<?php if($this->beginCache($id)) { ?>
...被缓存的片段内容...
    <?php $this->renderDynamic($callback); ?>
...被缓存的片段内容...
<?php $this->endCache(); } ?>
...别的HTML内容...

这里写图片描述


这里写图片描述
这里写图片描述

array(

      'components'=>array(

          'cache'=>array(

              'class'=>'CMemCache',//配置缓存,使用memcache进行缓冲

              'servers'=>array(array('host'=>'127.0.0.1', 'port'=>11211)),

          ),),

);
$top20Post = Yii::app()->cache->get('top20Post');//从cache中读数据

if($top20Post==false){

      $top20Post = Yii::app()->db->createCommand('select * from Post order by createTime desc limit 20')->queryAll();//从数据库中查询

      $dependcy = new CDbCacheDependency('select max(createTime) from Post');//创建缓存依赖,依赖于最新发帖时间

      Yii::app()->cache->set('top20Post', $top20Post, 600, $dependcy);//往cache中写数据

}

这里写图片描述


http://www.yiichina.com/doc/guide/1.1/caching.data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值