一、首先在main.php配置缓存组件
  在components里面添加cache项。代码如下:
  

  1. // application components
  2. 'components'=>array(
  3. 'user'=>array(
  4. // enable cookie-based authentication
  5. 'allowAutoLogin'=>true,
  6. ),
  7. 'db'=>array(
  8. 'connectionString' => 'mysql:host=localhost;dbname=yiitest',
  9. 'emulatePrepare' => true,
  10. 'username' => 'root', //数据库用户
  11. 'password' => 'root', //密码
  12. 'charset' => 'utf8', //数据交互字符集
  13. 'tablePrefix' => 'tbl_', //数据库表的前缀
  14. 'enableParamLogging'=> true, //在页面底部显示sql语句绑定的参数信息
  15. 'enableProfiling' => true, //显示没个sql语句运行的时间
  16.  
  17. ),
  18. 'errorHandler'=>array(
  19. // use 'site/error' action to display errors
  20. 'errorAction'=>'site/error',
  21. ),
  22. 'log'=>array(
  23. 'class'=>'CLogRouter',
  24. 'routes'=>array(
  25. array(
  26. 'class'=>'CFileLogRoute',
  27. 'levels'=>'error, warning',
  28. ),
  29. // uncomment the following to show log messages on web pages
  30. //可以帮助我们获得应用的日志信息(包括运行的sql语句)
  31. array(
  32. 'class'=>'CWebLogRoute',
  33. ),
  34. ),
  35. ),
  36. 'cache'=> array(
  37. 'class'=>'system.caching.CFileCach', //定义缓存的类型。类型见system.caching下的文件
  38. ),
  39. ),
 
        在模板的页面​需要缓存的片段前后加以判断即可。如下:
        

  1. /*这里是缓存的判断,若缓存中有Goods片段,则直接取缓存。
    参数duration为过期时间,varyByParam为页面参数,即为同一路由下不同的page参数保存不同的缓存,也可为id
    dependency为缓存依赖条件。class为依赖的类型,sql为依赖条件的语句(依赖商品总价格,总的价格变化时则缓存无效)
    */
  1. <?php if ($this->beginCache('Goods' ,
          array( 'duration'=>3600,
              'varyByParam'=>'page',
              'dependency'=>array(
                'class'  => 'system.caching,dependencies.CDbCacheDependency',
                //依赖类型为数据库依赖
                'sql'   =>'select sum(goods_price) from {{goods}}',
                //依赖条件为商品的总价格  
              ),    
    ))){?>  
  2. <table class="goods_list">
  3. <tr>
  4. <td><?php echo $form->labelEx($goods_model , 'id');?></td>
  5. <td><?php echo $form->labelEx($goods_model , 'goods_name');?></td>
  6. <td><?php echo $form->labelEx($goods_model , 'goods_price');?></td>
  7. <td><?php echo $form->labelEx($goods_model , 'goods_category');?></td>
  8. <td><?php echo $form->labelEx($goods_model , 'goods_add_time');?></td>
  9. <td>相关操作</td>
  10. </tr>
  11. <?php
  12. foreach ( $goods_info as $_k=>$_v ){
  13. ?>
  14. <tr>
  15. <td><?php echo $_v->id;?></td>
  16. <td><?php echo $_v->goods_name;?></td>
  17. <td><?php echo $_v->goods_price;?></td>
  18. <td><?php echo $_v->goods_category;?></td>
  19. <td><?php echo $_v->goods_add_time;?></td>
  20. <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>
  21. </tr>
  22. <?php
  23. }
  24. ?>
  25. </table>
  26. <?php $this->endCache();}?>

缓存文件保存在runtime下。

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

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

缓存依赖:增加参数 dependency

Yii的缓存机制之片段缓存的更多相关文章

  1. Yii的缓存机制之数据缓存

    具体说法就是可以缓存变量信息. 设置:Yii::app()->cache->set(名字, 值, 过期时间): 使用:Yii::app()->cache->get(名字); 删 ...

  2. Yii的缓存机制之页面缓存

    页面缓存是不能通过片段缓存来实现的,因为布局和内容不能同时缓存.只能通过过滤器来生成缓存. 实现方法: 在控制器里使用过滤器来实现 function filters (){ return array( ...

  3. yii2.0缓存篇之片段缓存

    片段缓存指的是缓存页面内容中的某个片段.默认缓存 60秒. return $this->renderPartial("ca");                        ...

  4. IOS开发缓存机制之—本地缓存机制

    功能需求 这个缓存机制满足下面这些功能. 1.可以将数据缓存到本地磁盘. 2.可以判断一个资源是否已经被缓存.如果已经被缓存,在请求相同的资源,先到本地磁盘搜索. 3.可以判断文件缓存什么时候过期.这 ...

  5. 彻底理解浏览器的缓存机制(http缓存机制)

    一.概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: 同步s ...

  6. Mybatis学习(五)————— 延迟加载和缓存机制(一级二级缓存)

    一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的数据的话,就不查询从表的信息.所以这就是突出了懒这个特点.真是懒啊. Mybati ...

  7. Mybatis(五) 延迟加载和缓存机制(一级二级缓存)

    踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮. --WH 一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的 ...

  8. mybati缓存机制之一级缓存

      在月黑风高的某天夜晚,boss chen语重心长的发条了消息给小草说:“小草啊,是时候写写博客来记录平常自己积累的东西了......”.小草一听,平常没有写博客的习惯,在平常开发中只是用笔记记录自 ...

  9. 全面剖析Smarty缓存机制二[清除缓存方法]

    前段时间,写了一篇 Smaryt缓存机制的几种缓存方式 ,详细介绍了三种缓存方式:全局缓存.部分缓存.局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成.本来这篇早该完成,由于时间关 ...

随机推荐

  1. Android中的动画总结

    文章主要内容来源<Android开发艺术探索>,部分内容来源网上的文章,文中会有链接. Android系统提供了两个动画框架:属性动画框架和View动画框架. 两个动画框架都是可行的选项, ...

  2. 【UI】为项目添加类似于淘宝筛选列表勾选的ui-choose

    jQuery下载的地址:http://www.htmleaf.com/jQuery/Form/201512182916.html GitHub地址:https://github.com/wangxin ...

  3. MRP routing设置释疑

    Jeffer9@gmail.com         工艺是指在不同工作中心执行的作业序列         作业的详细信息 Number of cycles 在该工作中心操作几个循环 Number of ...

  4. Word Ladder II——找出两词之间最短路径的所有可能

    Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...

  5. 轻松搞定RabbitMQ(一)——RabbitMQ基础知识+HelloWorld

    转自 http://blog.csdn.net/xiaoxian8023/article/details/48679609 本文是简单介绍一下RabbitMQ,参考官网上的教程.同时加入了一些自己的理 ...

  6. 系统安全-Firewall

    Netfilter/iptables是与最新的2.6.x版本Linux内核集成的ip信息包过滤系统.如果Linux系统连接到因特网或LAN.服务器或连接LAN和因特网的代理服务器,则该系统有理由在Li ...

  7. selector模块使用

    #服务端 from socket import * import selectors sel=selectors.DefaultSelector() def accept(server_fileobj ...

  8. pandas-数据分析

    pandas是一个强大的python数据分析的工具包 pandas是基于numpy构建的 pandas的主要功能: 具备对其功能的数据结构DataFrame.Series 集成世间序列功能 提供丰富的 ...

  9. python--函数程序分析

    写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作 import os #加载模块 def xiu(a,b,c): #三个接受值的形参 f = open(a,encod ...

  10. 错误 1 error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file

    问题:错误 1 error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file 解答:加入include路径:E:\env\Anaconda2x6 ...