码迷,mamicode.com
首页 > 其他好文 > 详细

Yii的缓存机制之片段缓存

时间:2014-07-05 18:57:10      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:cWeb   style   blog   java   color   strong   

 
一、首先在main.php配置缓存组件
  在components里面添加cache项。代码如下:
  
// application components
    ‘components‘=>array(
        ‘user‘=>array(
            // enable cookie-based authentication
            ‘allowAutoLogin‘=>true,
        ),
        ‘db‘=>array(
            ‘connectionString‘  => ‘mysql:host=localhost;dbname=yiitest‘,
            ‘emulatePrepare‘    => true,
            ‘username‘          => ‘root‘,  //数据库用户
            ‘password‘          => ‘root‘,  //密码
            ‘charset‘           => ‘utf8‘,  //数据交互字符集
            ‘tablePrefix‘       => ‘tbl_‘,  //数据库表的前缀
            ‘enableParamLogging‘=> true,    //在页面底部显示sql语句绑定的参数信息
            ‘enableProfiling‘   => true,     //显示没个sql语句运行的时间
                        
        ),
        ‘errorHandler‘=>array(
            // use ‘site/error‘ action to display errors
            ‘errorAction‘=>‘site/error‘,
        ),
        ‘log‘=>array(
            ‘class‘=>‘CLogRouter‘,
            ‘routes‘=>array(
                array(
                    ‘class‘=>‘CFileLogRoute‘,
                    ‘levels‘=>‘error, warning‘,
                ),
                // uncomment the following to show log messages on web pages
                //可以帮助我们获得应用的日志信息(包括运行的sql语句)
                array(
                    ‘class‘=>‘CWebLogRoute‘,
                ),
            ),
        ),
        ‘cache‘=>  array(
             ‘class‘=>‘system.caching.CFileCach‘,    //定义缓存的类型。类型见system.caching下的文件
        ),
    ),

 

 
        在模板的页面?需要缓存的片段前后加以判断即可。如下:
        
/*这里是缓存的判断,若缓存中有Goods片段,则直接取缓存。
参数duration为过期时间,varyByParam为页面参数,即为同一路由下不同的page参数保存不同的缓存,也可为id
dependency为缓存依赖条件。class为依赖的类型,sql为依赖条件的语句(依赖商品总价格,总的价格变化时则缓存无效)
*/

<?php if ($this->beginCache(‘Goods‘ ,
      array( ‘duration‘=>3600,
          ‘varyByParam‘=>‘page‘,
          ‘dependency‘=>array(
            ‘class‘  => ‘system.caching,dependencies.CDbCacheDependency‘,
            //依赖类型为数据库依赖
            ‘sql‘   =>‘select sum(goods_price) from {{goods}}‘,
            //依赖条件为商品的总价格  
          ),    
))){?>   <table class="goods_list"> <tr> <td><?php echo $form->labelEx($goods_model , ‘id‘);?></td> <td><?php echo $form->labelEx($goods_model , ‘goods_name‘);?></td> <td><?php echo $form->labelEx($goods_model , ‘goods_price‘);?></td> <td><?php echo $form->labelEx($goods_model , ‘goods_category‘);?></td> <td><?php echo $form->labelEx($goods_model , ‘goods_add_time‘);?></td> <td>相关操作</td> </tr> <?php foreach ( $goods_info as $_k=>$_v ){ ?> <tr> <td><?php echo $_v->id;?></td> <td><?php echo $_v->goods_name;?></td> <td><?php echo $_v->goods_price;?></td> <td><?php echo $_v->goods_category;?></td> <td><?php echo $_v->goods_add_time;?></td> <td><a href="./index.php?r=admin/goods/update&id=<?php echo $_v->id;?>">修改</a> <a onclick="javascript:return confirm(‘确认删除?‘)" href="./index.php?r=admin/goods/delete&id=<?php echo $_v->id;?>" class="delete_goods">删除</a></td> </tr> <?php } ?> </table> <?php $this->endCache();}?>

  缓存文件保存在runtime下。

缓存依赖:我们的商品信息缓存可以自定义设置过期时间,根据具体需求业务类型决定,如果商品信息在没有过期之内数据库被修改了。这时缓存的数据就是错误的。这种情况可以通过缓存依赖来解决。

缓存依赖条件:假如我们依赖的条件是总的商品价格,如果价格发生变化,则需要时缓存过期。如果一个商品价格加5元,另一个商品价格减少5元,这样的话是不会更新缓存的。(因为条件总商品价格不变)

缓存依赖:增加参数 dependency

 

 

 

 

 

Yii的缓存机制之片段缓存,布布扣,bubuko.com

Yii的缓存机制之片段缓存

标签:cWeb   style   blog   java   color   strong   

原文地址:http://www.cnblogs.com/scrit/p/3822726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!