Yii的缓存机制之片段缓存
- // 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的缓存机制之片段缓存的更多相关文章
- Yii的缓存机制之数据缓存
具体说法就是可以缓存变量信息. 设置:Yii::app()->cache->set(名字, 值, 过期时间): 使用:Yii::app()->cache->get(名字); 删 ...
- Yii的缓存机制之页面缓存
页面缓存是不能通过片段缓存来实现的,因为布局和内容不能同时缓存.只能通过过滤器来生成缓存. 实现方法: 在控制器里使用过滤器来实现 function filters (){ return array( ...
- yii2.0缓存篇之片段缓存
片段缓存指的是缓存页面内容中的某个片段.默认缓存 60秒. return $this->renderPartial("ca"); ...
- IOS开发缓存机制之—本地缓存机制
功能需求 这个缓存机制满足下面这些功能. 1.可以将数据缓存到本地磁盘. 2.可以判断一个资源是否已经被缓存.如果已经被缓存,在请求相同的资源,先到本地磁盘搜索. 3.可以判断文件缓存什么时候过期.这 ...
- 彻底理解浏览器的缓存机制(http缓存机制)
一.概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,其机制是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,HTTP报文分为两种: 同步s ...
- Mybatis学习(五)————— 延迟加载和缓存机制(一级二级缓存)
一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的数据的话,就不查询从表的信息.所以这就是突出了懒这个特点.真是懒啊. Mybati ...
- Mybatis(五) 延迟加载和缓存机制(一级二级缓存)
踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮. --WH 一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的 ...
- mybati缓存机制之一级缓存
在月黑风高的某天夜晚,boss chen语重心长的发条了消息给小草说:“小草啊,是时候写写博客来记录平常自己积累的东西了......”.小草一听,平常没有写博客的习惯,在平常开发中只是用笔记记录自 ...
- 全面剖析Smarty缓存机制二[清除缓存方法]
前段时间,写了一篇 Smaryt缓存机制的几种缓存方式 ,详细介绍了三种缓存方式:全局缓存.部分缓存.局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成.本来这篇早该完成,由于时间关 ...
随机推荐
- Android中的动画总结
文章主要内容来源<Android开发艺术探索>,部分内容来源网上的文章,文中会有链接. Android系统提供了两个动画框架:属性动画框架和View动画框架. 两个动画框架都是可行的选项, ...
- 【UI】为项目添加类似于淘宝筛选列表勾选的ui-choose
jQuery下载的地址:http://www.htmleaf.com/jQuery/Form/201512182916.html GitHub地址:https://github.com/wangxin ...
- MRP routing设置释疑
Jeffer9@gmail.com 工艺是指在不同工作中心执行的作业序列 作业的详细信息 Number of cycles 在该工作中心操作几个循环 Number of ...
- Word Ladder II——找出两词之间最短路径的所有可能
Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...
- 轻松搞定RabbitMQ(一)——RabbitMQ基础知识+HelloWorld
转自 http://blog.csdn.net/xiaoxian8023/article/details/48679609 本文是简单介绍一下RabbitMQ,参考官网上的教程.同时加入了一些自己的理 ...
- 系统安全-Firewall
Netfilter/iptables是与最新的2.6.x版本Linux内核集成的ip信息包过滤系统.如果Linux系统连接到因特网或LAN.服务器或连接LAN和因特网的代理服务器,则该系统有理由在Li ...
- selector模块使用
#服务端 from socket import * import selectors sel=selectors.DefaultSelector() def accept(server_fileobj ...
- pandas-数据分析
pandas是一个强大的python数据分析的工具包 pandas是基于numpy构建的 pandas的主要功能: 具备对其功能的数据结构DataFrame.Series 集成世间序列功能 提供丰富的 ...
- python--函数程序分析
写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作 import os #加载模块 def xiu(a,b,c): #三个接受值的形参 f = open(a,encod ...
- 错误 1 error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file
问题:错误 1 error C1083: 无法打开包括文件: “numpy/arrayobject.h”: No such file 解答:加入include路径:E:\env\Anaconda2x6 ...