缓存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 "不缓存的内容";

}

YII缓存Cache的更多相关文章

  1. yii 缓存探究

    1.在配置文件中 //在权威指南上是'cache' 其实可以根据不同的缓存组件起不同的名称 //memcache缓存 'memcache' => array( 'class' => 'sy ...

  2. YII缓存依赖的应用

    YII缓存依赖的应用 缓存 缓存依赖 Yii 缓存是提升Web应用性能的简便有效的方式.当我们在加载网页需要过多的时间,比如说查询时间过久,抑或是调用接口占用过多I/O,建立缓存是一个行之有效的方法, ...

  3. YII缓存整理

    缓存 缓存是用于提升网站性能的一种即简单又有效的途径.通过存储相对静态的数据至缓存以备所需,我们可以省去生成这些数据的时间.在 Yii 中使用缓存主要包括配置和访问缓存组件 . 如下的应用配置指定了一 ...

  4. POCO库——Foundation组件之缓存Cache

    缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效, ...

  5. [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能

    [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...

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

    [.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率 ...

  7. .Net自带缓存Cache的使用

    对于数据比较大,经常要从数据库拿出来用的,可以考虑使用.Net自带的缓存Cache,简单好用: //向内存中插入一个缓存 System.Web.HttpRuntime.Cache.Insert(&qu ...

  8. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  9. Java 中常用缓存Cache机制的实现

    所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 所谓缓存,就是将程序或系统经常要调用的对象存在内存中 ...

随机推荐

  1. VM8下安装Mac OS X 10.7

    下载Mac OS X  10.7 安装包http://115.com/file/clj1iu8m#            下载HJMac http://115.com/file/cljyu1rh#   ...

  2. InstallShield 一些事件说明

    InstallShield 一些事件说明,和常量代码 大家可以把所有事件都点出来然后单步追踪就行了,我的经验是一般是从OnShowUI第一次显示UI界面开始,很容易就找到大家想处理的事件,另贴几个我发 ...

  3. 两种应该掌握的排序方法--------2.quick Sort

    介绍 http://zh.wikipedia.org/wiki/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F 用些里面的c++ 实现,感觉这个空间复杂度比较小.还挺好 in ...

  4. 常用的MAVEN公共私服

    flex-mojo http://repository.sonatype.org/content/groups/flexgroup flex相关 http://nexus.5amsolutions.c ...

  5. C#索引器的作用及使用

    1. 作用: 可以使得类和实例能够像数组那样使用一样,又称为带参属性 2. 区分 (1)索引器与数组的比较: 索引器的索引值不受类型限制.用来访问数组的索引值一定是整数,而索引器可以是其他类型的索引值 ...

  6. ab的排列 aa , ab ba,bb

    package reverseList; public class Main { static void perm(char c[],int lev,char ans[]) { if(c.length ...

  7. 洛谷P1294 高手去散步

    洛谷1294 高手去散步 题目背景 高手最近谈恋爱了.不过是单相思.“即使是单相思,也是完整的爱情”,高手从未放弃对它的追求.今天,这个阳光明媚的早晨,太阳从西边缓缓升起.于是它找到高手,希望在晨读开 ...

  8. 使用yum和iso镜像离线升级RedHat系统

    创建一个用于挂载iso镜像的目录.由于这个目录不能在挂载时自动创建,所以需要以root身份先创建一个目录.命令: mkdir mount_dir 以root身份把iso镜像挂载到上一步创建的目录上.命 ...

  9. Android 天气应用开发

    百度 API Store中很多免费的天气API,因此写一个天气应用相对变得很容易. 首先尝试API给的接口,接受返回数据. public class MainActivity extends Acti ...

  10. 活用maven使web.xml可以用maven变量

    活用maven使web.xml可以用maven变量 废话不多说,直接上代码 <build> <finalName>${finalWarName}</finalName&g ...