一、首先在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

最新文章

  1. nodejs中流(stream)的理解
  2. hdu 4050 2011北京赛区网络赛K 概率dp ***
  3. Scrum Meeting 1-20151201
  4. Fastreport使用经验(转)在Delphi程序中访问报表对象
  5. scanf,sscanf利用format跳过干扰的空格
  6. [QT Creator]LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 。
  7. 个人知识管理利器wiz
  8. 蓝桥杯 C语言 入门训练 Fibonacci数列
  9. iptables配置详解
  10. AtCoder Grand Contest 031 (AGC031) D - A Sequence of Permutations 其他
  11. python, generator.next()和send()
  12. Java之工具类:判断对象是否为空或null
  13. strtus2 文件上传
  14. js 验证代码部分的简单实现
  15. 管理oracle的一些知识
  16. ArcEngine10.x开发的许可问题
  17. hdu5091 线段树
  18. Python中实现switchcase
  19. 使用Python爬虫爬取网络美女图片
  20. 使用Kismet进行网络扫描

热门文章

  1. IDEA查看源码时提示:Library source does not match the bytecode for class的问题分析
  2. ubuntu允许mysql远程连接
  3. 6.【nuxt起步】-完成一个静态的页面
  4. mac 下 virtualbox 配置全网通
  5. CentOS6.5_64bit下编译安装MySQL-5.6.23
  6. yarn 基本用法
  7. Irrlicht 3D Engine 笔记系列之 教程4 - Movement
  8. ListView 自己定义BaseAdapter实现单选打勾(无漏洞)
  9. 命令行查看w3wp进程信息
  10. AMD单桥主板上电时序的详细解释