yii cache 缓存

yii cache 缓存

  (2012-03-14 11:40:15)
标签: 

杂谈

分类: yii

1.数据缓存

常见的缓存操作方法get,set,add,delete,flush默认的缓存文件保存到protected/runtime/目录。

ApcCache扩展配置

第一步:下载php_apc.dll 在http://downloads.php.net/pierre/
第二步:让php.ini支持apc扩展模块。
将php_apc.dll放入你的ext目录,然后打开php.ini 加入:

Java代码    收藏代码
  1. extension=php_apc.dll  
  2. apc.rfc1867 on  
  3. apc.max_file_size 100M  
  4. upload_max_filesize 100M  
  5. post_max_size 100M  
  6. apc.slam_defense 0  
  7. apc.write_lock 1   

在配置文件中配置缓存,可以配置多个。代码如下

Java代码    收藏代码
  1. 'ApcCache'=>array(  
  2.     'class'=>'CApcCache'   
  3. ),    
  4. 'Dbcache'=>array(  
  5.     'class'=>'CDbCache' 
  6. ),  
  7. 'FileCache'=>array(  
  8.     'class'=>'CFileCache' 
  9.     'cachePath'=> '/Webroot/trackstar/protected/runtime/cache/test' 
  10.  ),   
  11. 'MemCache'=>array(  
  12.     'class'=>'CMemCache' 
  13.     'servers'=>array(  
  14.         array(  
  15.             'host'=>'server1' 
  16.             'port'=>11211 
  17.             'weight'=>60 
  18.         ),  
  19.         array(  
  20.             'host'=>'server2' 
  21.             'port'=>11211 
  22.             'weight'=>40 
  23.         ),  
  24.     ),  
  25. ),  

session cache在开启apc cache时可以用,它将seesion存到apc中比存到文件中要快

Java代码    收藏代码
  1. 'cache' => array(  
  2.     'class' => 'CApcCache' 
  3. ),  
  4. 'session' => array(  
  5.     'class' => 'CCacheHttpSession' 
  6. ),  

--------------------------------------------------------------------------------------
| 这种配置component的方式非常灵活。                              
| Yii的webapp,继承了CModule,而CModule重写了__set,__get      
| 魔术方法,他们的作用就是针对应用配置文件中对未知component  
| 名称的设置和调用。非常灵活。系统只是约定了一组coreComponent
| 的调用方式。如getCache,getDb ,等。                         
--------------------------------------------------------------------------------------
通过以下方式调用
Yii::app()->FileCache;
Yii::app()->Dbcache;

存取,设置缓存,也很简单
$cacheObj->set($key,$value,$expire);
$cacheObj->get($key);

 

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

 

CDbConnection::cache()

Java代码    收藏代码
  1. $sql 'SELECT FROM tbl_post LIMIT 20' 
  2. $dependency new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');  
  3. $rows Yii::app()->db->cache(1000$dependency)->createCommand($sql)->queryAll();  

CActiveRecord::cache()

Java代码    收藏代码
  1. $dependency new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');  
  2. $posts Post::model()->cache(1000$dependency)->findAll();  

 

2.片段缓存

片段缓存指缓存网页某片段,要使用片段缓存,在控制器视图脚本中调用CController::beginCache()CController::endCache() 。这两种方法开始和结束包括的页面内容将被缓存。

Java代码    收藏代码
  1. <?php if($this->beginCache('part',array('cacheID'=>'ApcCache'))) ?>  
  2. this is part test cache<br>  
  3. <?php $this->endCache(); ?>  

其中part是缓存后的$key值,this is part test cache<br>是缓存后的$value值,cacheID是main.php中的配置,默认是cache,不需要

 

3.页面缓存

页面缓存指的是缓存整个页面的内容。

 

Java代码    收藏代码
  1. public function filters(){          
  2.     return array(     
  3.         array(    
  4.             'COutputCache+index'    
  5.             'duration' => 120 
  6.             'cacheID' => 'MemCache' 
  7.             'varyByParam'=>array('id'),       
  8.         ),       
  9.     );       
  10.  

其中大家可以看到 COutputCache+index,这里的意思是使用COutputCache类缓存文件,后面的加index指的是只缓存actionIndex函数,如果你需要缓存其他的就继续增加COutputCache+index,hello,test…如果没有后面的+那么默认是缓存整个控制器里面的所有方法 ,该filter配置为利用COutputCache过滤器来缓存整个被应用程序

varyByParam是我们之前提起过的一种很重要的可选项。为了给你减轻压力,减少编写标识被缓存内容key的工作量,该功能允许key被框架自动控制。也就是说,通过指定一系列来自GET参数中的名称。当我们开始请求时,系统将会很好的使用该id作为唯一key的一部分来生成缓存内容。通过指定'varyByParam'=> array('id'),COutputCache为我们完成了基于输入请求字符串中id的余下工作 。这里有很多可选项,在我们使用 COutputCache来缓存数据时,来作为自动生成key名字的策略。下面是可以使用的一个列表:

  • varyByRoute:通过将该选项设置为true,具体请求的路由部分将会作为独立标识符的一部分用于生成缓存数据。所以,你可以使用请求controller和acion的组合来区别缓存内容。
  • varyBySession:通过设置该选项为true,将使用唯一的session id来区分缓存中的内容。每个用户的session都是不同的,但是可以用来为缓存服务。
  • varyByParam

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值