{片段缓存}:
片段缓存实现
<?php
if($this->beginCache('goods')
array(
'duration'=>3600---->缓存时间
'varyByParam'=>array('page'),-->根据不同的参数生成不同的缓存页面
'dependency'=>array(
'class'=>'CDbCacheDependency'---->数据库缓存依赖
'sql'=>'select sum(goods_price)from {{goods}}'--->商品总的价格是否有变化,如果有变化,就更新缓存
)
)){
?>
系统检测缓存里面是否有goods缓存,如果有,直接输入,foreach等后面的内容,如果没有,就会在foreach到,endCache生成缓存,
文件缓存,缓存的信息,在runtime目录中存放.
使用缓存的步奏:
1.在程序里面设置缓存
2。在主配置文件main.php里面配置缓存组件cache(在这里面设置那种缓存)
'cache'=>array(
'class'=>'CFileCache'--->文件缓存
)
<?php
}
?>
<?php
$this->endCache();
?>
缓存变化:
在商品信息中实现缓存,在实现其他商品信息页面的时候,也是访问该缓存页面
因为,每一页的路由都是一样的,那么系统会误认为访问的是一个页面,但是页面的
配置参数是不一样的,所以我们需要根据参数的变化,生成不同的缓存文件....
缓存依赖:
我们的商品信息缓存可以自定义设置过期时间,根据具体需求业务类型决定
如果商品信息在没有过期之内已经变化(数据库更改),这时缓存文件没有过期,
我们需要及时跟新缓存文件以免误导客户,通过缓存依赖来实现。、
缓存依赖条件:我们依赖的条件是总的商品价格,如果总价格发生变化,有可能是商品的信息
有增加或减少的情况,或者商品的价格被修改.。
如果一个商品加5元,另一个商品减少5元,总的价格没有变换,缓存是不会更改的。
片段缓存步奏:
1.在main.php里面设置cache组件
2.实现片段缓存(beginCache, endCache)
3.缓存变化
4.缓存依赖
COutputCatche文件中设置缓存
microtime()--->时间戳信息
{页面缓存实现}
1.是否可以通过“页面缓存”实现
答:这样是不可以的,因为布局文件时没有被缓存的
2.我们是否可以再布局页面进行缓存(视图先加载,布局后加载)
答:理论上不可以的,(view)视图先加载,(layout)布局后加载
用户访问控制,实现页面缓存
Filters
accessControl
accessRules
在controller中配置
//通过用户访问控制过滤实现页面缓存
//过滤器
//accessControl是方法过滤器
//array() 是类过滤器
funciton filters(){
return array(
//'accessControl', 方法过滤器
//类过滤器,实现页面缓存COutputCache.php
//只针对detail商品详情缓存
array(
'COutputCache + detail',
'duration'=>1800,
'varByParam'=>array('id')-->根据商品id生成缓存
)
)
}
{数据缓存}
具体就是可以缓存变量信息
变量缓存的使用
在controller中设置
设置:Yii::app()->cache->set(名字,值,过期时间)
使用:Yii::app()->cache->get(名字)
删除:Yii::app()->cache->delete(名字)
清空:Yii::app()->cache->flush(名字);
//设置缓存变量
function actionHuanl(){
Yii::app()->cache->set('username','zhangsan',3600);
echo "set cache username";
}
//获取缓存变量
function actionHuang(){
echo Yii:app()->cache->get('username');
}
function actionHuand(){
Yii::app()->cache->delete('username');
}
function actionHuans(){
//可以清空缓存变量,删除片段缓存或者文件缓存
Yii::app()->cache->flush()
}
数据缓存应用(重要)
//通过缓存实现数据的读取
//自定义方法getGoodsInfoByPk(),是模型model里面的一个方法
//该方法可以根据具体Id信息获得商品详细
$goods_info = Goods::model()->getGoodsInfoByPk($id);
在model中顶一个方法
function getGoodsInfoByPk($id){
//把获得的具体详细商品信息存入缓存,下次再来获取信息,就到缓存中读取
$info = Yii::app()->cache->get('goods_info'.$id);
//判断缓存信息有无
if(!empty($info))
return $info;
$sql = 'select * from {{goods}} where goods_id = '$id';
$goods_info = $this->findBySql($sql);
//设置缓存
Yii::app()->cache->set('goods_info'.$id,$goods_info,3600);
return $goods_info;
}
{动态缓存}
smarty 动态缓存 insert
我们可以缓存整个页面,但是只有一个小的区域,会根据不同的条件显示不同的信息,
这个小的区域需要设置动态缓存
$this->beginCache()
中间有区域需要动态缓存
$this->renderDynamic(回调函数)
$this->endCache()
在哪里需要设置动态缓存就在哪里设置
<?php //echo Yii::app()->user->username ?>
<?php echo renderDynamic('show_name') ?>
controller
//动态缓存回调函数,没有'action'关键字
function show_name(){
return Yii::app()->user->username;
}
//这个show_name()控制器要放在普通控制器的父类中
片段缓存实现
<?php
if($this->beginCache('goods')
array(
'duration'=>3600---->缓存时间
'varyByParam'=>array('page'),-->根据不同的参数生成不同的缓存页面
'dependency'=>array(
'class'=>'CDbCacheDependency'---->数据库缓存依赖
'sql'=>'select sum(goods_price)from {{goods}}'--->商品总的价格是否有变化,如果有变化,就更新缓存
)
)){
?>
系统检测缓存里面是否有goods缓存,如果有,直接输入,foreach等后面的内容,如果没有,就会在foreach到,endCache生成缓存,
文件缓存,缓存的信息,在runtime目录中存放.
使用缓存的步奏:
1.在程序里面设置缓存
2。在主配置文件main.php里面配置缓存组件cache(在这里面设置那种缓存)
'cache'=>array(
'class'=>'CFileCache'--->文件缓存
)
<?php
}
?>
<?php
$this->endCache();
?>
缓存变化:
在商品信息中实现缓存,在实现其他商品信息页面的时候,也是访问该缓存页面
因为,每一页的路由都是一样的,那么系统会误认为访问的是一个页面,但是页面的
配置参数是不一样的,所以我们需要根据参数的变化,生成不同的缓存文件....
缓存依赖:
我们的商品信息缓存可以自定义设置过期时间,根据具体需求业务类型决定
如果商品信息在没有过期之内已经变化(数据库更改),这时缓存文件没有过期,
我们需要及时跟新缓存文件以免误导客户,通过缓存依赖来实现。、
缓存依赖条件:我们依赖的条件是总的商品价格,如果总价格发生变化,有可能是商品的信息
有增加或减少的情况,或者商品的价格被修改.。
如果一个商品加5元,另一个商品减少5元,总的价格没有变换,缓存是不会更改的。
片段缓存步奏:
1.在main.php里面设置cache组件
2.实现片段缓存(beginCache, endCache)
3.缓存变化
4.缓存依赖
COutputCatche文件中设置缓存
microtime()--->时间戳信息
{页面缓存实现}
1.是否可以通过“页面缓存”实现
答:这样是不可以的,因为布局文件时没有被缓存的
2.我们是否可以再布局页面进行缓存(视图先加载,布局后加载)
答:理论上不可以的,(view)视图先加载,(layout)布局后加载
用户访问控制,实现页面缓存
Filters
accessControl
accessRules
在controller中配置
//通过用户访问控制过滤实现页面缓存
//过滤器
//accessControl是方法过滤器
//array() 是类过滤器
funciton filters(){
return array(
//'accessControl', 方法过滤器
//类过滤器,实现页面缓存COutputCache.php
//只针对detail商品详情缓存
array(
'COutputCache + detail',
'duration'=>1800,
'varByParam'=>array('id')-->根据商品id生成缓存
)
)
}
{数据缓存}
具体就是可以缓存变量信息
变量缓存的使用
在controller中设置
设置:Yii::app()->cache->set(名字,值,过期时间)
使用:Yii::app()->cache->get(名字)
删除:Yii::app()->cache->delete(名字)
清空:Yii::app()->cache->flush(名字);
//设置缓存变量
function actionHuanl(){
Yii::app()->cache->set('username','zhangsan',3600);
echo "set cache username";
}
//获取缓存变量
function actionHuang(){
echo Yii:app()->cache->get('username');
}
function actionHuand(){
Yii::app()->cache->delete('username');
}
function actionHuans(){
//可以清空缓存变量,删除片段缓存或者文件缓存
Yii::app()->cache->flush()
}
数据缓存应用(重要)
//通过缓存实现数据的读取
//自定义方法getGoodsInfoByPk(),是模型model里面的一个方法
//该方法可以根据具体Id信息获得商品详细
$goods_info = Goods::model()->getGoodsInfoByPk($id);
在model中顶一个方法
function getGoodsInfoByPk($id){
//把获得的具体详细商品信息存入缓存,下次再来获取信息,就到缓存中读取
$info = Yii::app()->cache->get('goods_info'.$id);
//判断缓存信息有无
if(!empty($info))
return $info;
$sql = 'select * from {{goods}} where goods_id = '$id';
$goods_info = $this->findBySql($sql);
//设置缓存
Yii::app()->cache->set('goods_info'.$id,$goods_info,3600);
return $goods_info;
}
{动态缓存}
smarty 动态缓存 insert
我们可以缓存整个页面,但是只有一个小的区域,会根据不同的条件显示不同的信息,
这个小的区域需要设置动态缓存
$this->beginCache()
中间有区域需要动态缓存
$this->renderDynamic(回调函数)
$this->endCache()
在哪里需要设置动态缓存就在哪里设置
<?php //echo Yii::app()->user->username ?>
<?php echo renderDynamic('show_name') ?>
controller
//动态缓存回调函数,没有'action'关键字
function show_name(){
return Yii::app()->user->username;
}
//这个show_name()控制器要放在普通控制器的父类中