YII2框架学习 高效篇(三) 片段缓存与页面缓存
来源:互联网 发布:mac版的easysketch 编辑:程序博客网 时间:2024/06/06 00:34
实际网站建设中,对于不经常改变的部分(比如商品目录)可以使用片段缓存的技术进行缓存。
先来一个小例子,通过beginCache()和endCache()方法实现
<?phpif( $this->beginCache('cache_div')) { ?> <div id='cache_div'> <div>缓存adad</div> </div> <?php $this->endCache();}?><div id='no_cache_div'> <div>不缓存adad</div></div>
不论如何修改缓存区的文字,都不会变化,因为浏览器取的是之前缓存的。
下面看看缓存时间设置,beginCache()的第二个参数是一个数组,数组里面的duration的value为时间,超过时间,缓存会刷新。看例子
<?php//缓存时间设置if( $this->beginCache('cache_div',['duration'=>15])) { ?> <div id='cache_div'> <div>缓存add</div> </div> <?php $this->endCache();}?>
和前面的数据缓存依赖类似,片段缓存也可以设置依赖,这里用一个文件依赖做例子
<?php//缓存文件依赖设置$dependency = [ 'class' => 'yii\caching\FileDependency', 'fileName' => 'hw.txt'];if( $this->beginCache('cache_div',['dependency' => $dependency])) { ?> <div id='cache_div'> <div>缓存adda</div> </div> <?php $this->endCache();}?>当hw.txt被修改之后,缓存才会刷新
还可以设置缓存开关,beginCache()的第二个参数是一个数组,数组里面的enable的value为开关,看例子
<?php//缓存开关设置if( $this->beginCache('cache_div',['enabled' => false])) { ?> <div id='cache_div'> <div>缓存ada</div> </div> <?php $this->endCache();}?>
那么,问题来了。如果是缓存嵌套怎么办?比如
<?php if( $this->beginCache('cache_div',['enabled' => false])) { ?> <div id='cache_div'> <div>缓存33ada</div> </div> <?php if( $this->beginCache('cache_inner_div',['enabled' => true])) { ?> <div id='cache_inner_div'> <div>内层缓存331321da</div> </div> <?php $this->endCache(); } ?> <?php $this->endCache();}?>
注意:这种时候,如果外层被缓存了,里层是没有被解析的机会的,只能被缓存。但是外层没有被缓存的话,里层的缓存设置是生效了。记住了!!!!
之前学习了片段缓存,应对片段不经常刷新的情况。但是有的时候连页面都不用刷新,那么就要用到页面缓存技术了。
在控制器需要缓存的页面方法前,加入名为behaviors的方法,如下:
public function behaviors(){ return [ [ 'class' => 'yii\filters\PageCache', 'duration' => 1000,//时间设置 'only' =>['about'],//规定缓存哪一个,默认为全部 'dependency' => [ 'class' => 'yii\caching\FileDepengency', 'filename' => 'hw.txt' ]//文件依赖 ] ]; } public function actionAbout(){ return $this->renderPartial('about'); }
阅读全文
0 0
- YII2框架学习 高效篇(三) 片段缓存与页面缓存
- YII2框架学习 高效篇(二) 数据缓存
- YII2框架学习 高效篇(四) http缓存
- yii2.0缓存篇之片段缓存
- Yii2片段缓存详解
- Yii2片段缓存详解
- yii2.0缓存篇之页面缓存
- 页面片段缓存(一)
- 页面片段缓存(二)
- Yii2页面缓存详解
- yii2页面缓存
- 系统缓存学习(三)页面局部缓存
- 关于yii的缓存的学习(学习自慕课网---与《YII框架》不得不说的的故事—高效篇)
- YII2.0框架(三) 缓存机制yii\caching\Cache
- ESI+varnish页面片段缓存
- 页面片段缓存----基于velocity
- YII2框架学习 高效篇(一) 延迟加载
- YII2框架学习 高效篇(五) Gii工具
- js实现冒泡排序和快速排序
- nginx的配置、虚拟主机、负载均衡和反向代理--01
- 浅谈SEO优化-站点优化(3)
- java TCP/IP Socket编程-----发送和接受数据-----笔记7
- Jenkins安装(Windows环境)
- YII2框架学习 高效篇(三) 片段缓存与页面缓存
- Bash Scripts-I
- java,根据对角线打印矩阵
- Standards-zigbee-smart-energy-1-2-revision-4
- c++(冰雹序列)
- HorizontalScrollView+Viewpager
- HDU-5437-模拟-优先队列
- 对象是否存活
- NumPy的详细教程