YII缓存Cache

缓存Cache

定义:将数据暂时存放在一个存储速度更快的介质上,下次读取数据时就可以从这个介质上来读取数据

介质:内存、文件、数据库(优化好的数据库)

Yii缓存的分类:(framework/caching/)在main.php中设置缓存时要用

CDbCache.php数据库缓存

CFileCache.php文件缓存

CMemCache.php内存缓存

文件缓存分类:

片段缓存

页面缓存

动态缓存

数据缓存

在main.php全局配置文件中设置缓存

‘components‘=>array(

"cache"=>array(

"class"=>"system.caching.CFileCache",//设置使用哪种缓存(CDbCache数据库缓存、CFileCache文件缓存、CMemCache内存缓存等)

),

),

--------------------------------------------------------

片段缓存(局部缓存)

1、在main.php中开启并设置缓存(如上)

2、在视图页面编写码

<?php

if($this->beginCache("缓存的别名"))//缓存的开始(缓存文件永不过期)

if($this->beginCache("缓存的别名",array(

"duration"=>缓存时间,//指定缓存的时间

"varyByParam"=>array("url参数名"),//按不同的请求参数进行缓存

"varyByRoute"=>true,//设置为true时,将根据不同的路由分别来进行缓存

"varyBySession"=>true,//设置为true时,将根据不同的sessionId分类来进行缓存

"dependency"=>array(//设置缓存依赖

"class"=>"system.caching.dependencies.CDbCacheDependency",//设置数据库缓存依赖

"sql"=>"select count(*) from {{bbsInfo}}",//设置依赖的条件,表的总记录数变化后缓存文件更新(既使缓存文件没有过期也更新)

),

)))//缓存的开始(缓存文件永不过期)

{

?>

想要缓存的内容

<?php

$this->endCache();//缓存的结束

}

?>

说明:if判断处,如果有与"缓存的别名"相同的缓存,那么页面将显示缓存的内容,否则将执行"想要执行缓存的内容"代码

3、缓存的内容存储在protected/runtime/cache目录下

4、缓存依赖:缓存内容中的一小部分内容变更了(数据库中的数据变更),但缓存文件还没有过期,这时就用缓存依赖来实现

framework/caching/dependencies目录下所有文件就是用于设置缓存依赖

CCacheDependency.php普通缓存依赖

CChainedCacheDependency.php连锁缓存依赖

CDbCacheDependency.php数据库缓存依赖(因指定的sql语句的查询结果发生变化而更新缓存文件)

CFileCacheDependency.php文件缓存依赖(因指定的文件的最后修改时间发生变化而更新缓存文件)

CDirectoryCacheDependency.php目录缓存依赖(因当前目录或其子目录下的任何文件发表改变而更新缓存文件)

CExpressionDependency.php表达式缓存依赖

CGlobalStateCacheDependency.php全局变量缓存依赖(因指定的全局状态值发生改变而更新缓存文件)

5、duration、varyByParam、varyByRoute、varyBySession、dependency来源于哪里

framework/web/widgets/COutputCache.php文件里的属性

--------------------------------------------------------

页面缓存

1、在main.php中开启并设置好缓存

2、在控制器中设置页面缓存

class XxxController extends Controller

{

//通过过滤器实现页面缓存

//accessControl 是方法过滤器

//array 是类过滤器

public function filters()

{

return array(

//通过类过滤器实现页面缓存

//缓存都是通过COutputCache.php来实现的

array(

//"system.web.widgets.COutputCache",//对当前控制器所有方法进行缓存

"system.web.widgets.COutputCache + index",//对当前控制器index方法进行缓存

"duration"=>3,//缓存时间

"varyByParam"=>array("id"),//按不同请求参数进行缓存

),

);

}

public function actionIndex()

{

$t1 = time();

$t2 = time();

$t3 = time();

$result = array(

"t1"=>$t1,

"t2"=>$t2,

"t3"=>$t3

);

$this->render("index",$result);

}

}

--------------------------------------------------------

数据缓存(缓存某一个变量值,变量缓存)

1、在main.php配置文件中开启并设置好缓存

2、使用方法

添加:Yii::app()->cache->set(名,值,时间);

获得:Yii::app()->cache->get(名);

删除:Yii::app()->cache->delete(名);

清空:Yii::app()->cache->flush();

3、例如

class Cache2Controller extends Controller

{

public function actionIndex()

{

$t1 = time();

$t2 = time();

$t3 = Yii::app()->cache->get("t3");

//注意这段代码(变量缓存)

if($t3 == NULL)

{

Yii::app()->cache->set("t3",time(),3);

}

$result = array(

"t1"=>$t1,

"t2"=>$t2,

"t3"=>$t3

);

$this->render("index",$result);

}

}

--------------------------------------------------------

动态缓存(局部不缓存:整个页面缓存,但一小部分数据不缓存或可以根据条件动态更新)

1、在main.php开启并设置好缓存

2、当前页面必须己经使用了页面缓存

3、在视图页面

<?php $this->renderDynamic("hello") ?><!-- 调用当前控制器中的hello方法,该块内容不会被缓存 -->

4、在控制器中添加视图页面要调用的回调函数

public function hello()

{

return "不缓存的内容";

}

时间: 2024-10-05 06:22:08

YII缓存Cache的相关文章

YII缓存依赖的应用

YII缓存依赖的应用 缓存 缓存依赖 Yii 缓存是提升Web应用性能的简便有效的方式.当我们在加载网页需要过多的时间,比如说查询时间过久,抑或是调用接口占用过多I/O,建立缓存是一个行之有效的方法,它可以避免多次加载页面缓慢的不良用户体验.但是网页中数据并不是一成不变的,它是变化的,就如查询有不同条件不同内容,所以我们缓存的内容也要随之变化,这就是缓存依赖所存在的必要性. 设置缓存 一般情况下,我们会给缓存的变量设置过期时间,到了过期时间,该变量也就随之有效,下次加载就必须重新生成缓存,这就是

YII缓存整理

缓存 缓存是用于提升网站性能的一种即简单又有效的途径.通过存储相对静态的数据至缓存以备所需,我们可以省去生成这些数据的时间.在 Yii 中使用缓存主要包括配置和访问缓存组件 . 如下的应用配置指定了一个使用两台缓存服务器的 memcache 缓存组件: [plain] view plaincopyprint? array( ...... 'components'=>array( ...... 'cache'=>array( 'class'=>'system.caching.CMemCac

yii 缓存探究

1.在配置文件中 //在权威指南上是'cache' 其实可以根据不同的缓存组件起不同的名称 //memcache缓存 'memcache' => array( 'class' => 'system.caching.CMemCache', 'servers' => array( array('host' => '127.0.0.1', 'port' => 11211,'weight'=>40)), /* * yii中的memcache可以理解为在原始memcache的基础

[.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率. 本节将介绍如何利用缓存写出高效率的代码. 1. 什么是缓存(Cache)? 缓存(Cache)是一种用空间换取时间的技术 存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取. 比如CPU二级缓存.内存.windows文件读取缓存. 2. .NE

HttpResponseCache的使用缓存cache

为什么要用cache? 我们可以通过传递类似上次更新时间这样的参数来制定查询某些数据.同样,在下载图片的时候,server那边最好能够减少图片的大小,而不是让我们下载完整大小的图片. 之前我们在软件开发中,cache都是自己来写,不管是图片缓存还是其他从网络获取的数据,有了HttpResponseCache,它帮助我们可以很好的解决cache这个问题(我现在感觉他只适合cache一些小的数据,如果大量的图片cache还是自己缓存到SD卡上面去比较好). HttpResponseCache的好处:

ASP.NET缓存 Cache

缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多少人访问都只访问一次数据库,数据库压力不变缓存是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取,比如CPU二级缓存,WINDOWS文件读取缓存缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据中数据一致,则需要在慢

POCO库——Foundation组件之缓存Cache

缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效,此外提供key获取键.isValid是否键有效,invalidate使得键值无效:默认情况下键为有效: KeyValueArgs.h :KeyValueArgs键值参数对类,模板参数实现,_key:键,_value:键值:此外提供key获取键,value获取键值: EventArgs.h :事件参数

asp.net,缓存Cache

缓存Cache: 1>直接使用Cache["content"],缓存与Session不同,所有用户都可以共享.永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉. 2>设置绝对过期日期.Cache.Insert("nowTime", DateTime.Now, null, DateTime.Now.AddSeconds(7), TimeSpan.Zero); 3>设置滑动过期日期: Cache.Insert("nowTime&q

缓存(Cache)

什么是缓存? web应用程序可被多个用户访问.当用户少,负载低时,可提供快速的访问.当负载成倍增加时,响应就慢下来了.服务器响应慢是高负载网站最常见的问题.为了解决这个问题,我们常采用升级硬件配置,负载均衡,增加带宽等措施.但下载并不是响应慢的唯一原因.我们需要提供一种加快数据访问的机制,进而提升网站的性能.缓存提供了这种解决方案.缓存是种技术.我们可以把频繁使用的数据缓存或把网页临时缓存在本地硬盘为了以后再次访问.在大量用户访问一个站点或一个用户多次访问站点时,缓存技术能加快响应.缓存可以出现