[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中写数据
}