网站首页footer中的菜单标题是从数据库读取并显示处理的。

也就是 <footer>标题里面是foreach。这样每个人打开网站就查询遍历效率会很低。

<footer class="footer">
<div class="container">
<div class="row">
<div class="col-lg-10">
<div class="row">
<?php
$html = '';
$i = 0;
$res = ArticleCategory::getHelpArticles();
if (!empty($res)) {
foreach ($res as $cate) {
$i++;
$html .= '<div class="col-lg-2"><dl class="col-links col-links-first">';
$html .= Html::tag('dt', $cate->attributes['name']);
if (!empty($cate->articles)) {
foreach ($cate->articles as $article) {
$html .= '<dd>';
$html .= Html::a($article->title, Url::to('/page/' . $article->friendlyUrl));
$html .= '</dd>';
}
$html .= '</dl>';
}
$html .= '</dl></div>';
}
}
echo $html;
?>
</div>
</div>
</footer>

如果要把footer之间的内容缓存起来。每60分钟刷新一次。这样就会减少很多不必要的查询。

Yii2.0 在缓存方面做的不错,做法非常简单。

开始行动:

footer上方加入

$footerCacheKey = 'footerCache';
if ($this->beginCache($footerCacheKey)) {
?> <footer class="footer">

footer下方

</footer>
<?php
$this->endCache();
}

footer属于首页,是由SiteController调用。

在 behaviors() 方法里面加入

    public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout', 'signup'],
'rules' => [
[
'actions' => ['signup'],
'allow' => true,
'roles' => ['?'],
],
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
// 新加入的代码
'pageCache' => [
'class' => 'yii\filters\PageCache',
'only' => ['index'],
'duration' => 60*60*24,
],
];
}

参考:

http://www.yiiframework.com/doc-2.0/guide-caching-page.html

http://www.yiiframework.com/doc-2.0/guide-caching-fragment.html

Yii 2.0 使用片段缓存的更多相关文章

  1. YII 1.0 缓存使用

    在main.php的组件components中配置设置添加缓存 'cache'=>array( 'class' => 'system.caching.CFileCache' ), 也就是f ...

  2. yii2.0缓存篇之片段缓存

    片段缓存指的是缓存页面内容中的某个片段.默认缓存 60秒. return $this->renderPartial("ca");                        ...

  3. yii的简单片段缓存

    $dependency = [    'class' => 'yii\caching\DbDependency',    'sql' => 'SELECT MAX(u_id) FROM u ...

  4. yii2.0使用之缓存

    1.片段缓存(针对于视图中的某部分进行缓存): <?php 设置有效时间 $time=15; 缓存依赖,存入文件.当文件内容发生改变是才会刷新新内容 $dependecy=[ 'class'=& ...

  5. ESI+varnish页面片段缓存

    对于片段缓存,业界有成熟的解决方案,还有一个所谓的W3C标准:ESI(Edge Side Include) . ESI本身没有什么,只是一个XML的标签集合.ESI和SSI(Server Side I ...

  6. [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]

    Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...

  7. 使用nginx部署Yii 2.0\yii-basic-app-2.0.5

    nginx.conf #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log noti ...

  8. iOS开发--基于AFNetWorking3.0的图片缓存分析

    图片在APP中占有重要的角色,对图片做好缓存是重要的一项工作.[TOC] 理论 不喜欢理论的可以直接跳到下面的Demo实践部分 缓存介绍 缓存按照保存位置可以分为两类:内存缓存.硬盘缓存(FMDB.C ...

  9. 在YII中使用Redis等缓存

    Yii AR 单行数据-自动缓存机制 | LOCKPHP Yii AR 单行数据-自动LOG机制 CActiveRecordBehavior进阶 | LOCKPHP 缓存 - 权威指南 - Yii F ...

随机推荐

  1. CSS(层叠样式表)基础知识

     CSS 指层叠样式表 (Cascading Style Sheets).样式定义怎样显示 HTML 元素.它通常存储在样式表中,把样式加入到 HTML 4.0 中,解决内容与表现分离的问题. 当同一 ...

  2. webpack中热模块更新

    Hot Module Replacement,热模块更新,很多时候会简写成HMR. "scripts": { "start": "webpack-de ...

  3. 5 个强大的 HTML5 API

    HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1.  全屏API(Fulls ...

  4. Kali-linux服务的指纹识别

    为了确保有一个成功的渗透测试,必须需要知道目标系统中服务的指纹信息.服务指纹信息包括服务端口.服务名和版本等.在Kali中,可以使用Nmap和Amap工具识别指纹信息.本节将介绍使用Nmap和Amap ...

  5. Android之zip文件加密解压及进度条的实现

    zip文件的解压能够使用java的zip库,可是没有实现对加密文件的解压功能,这里能够使用zip4j来实现.详细能够參看该文<Android下zip压缩文件加密解密的完美解决方式>.该文件 ...

  6. Python 分支、循环、条件、枚举

    对于表达式,分为“左结合”和“右结合” 左结合:对于没有 = 号的,从左到右边,当然要考虑优先级. 右结合:对于有 = 号存在的情况,右边的自成一体,然后赋值给左边变量   优先级: 逻辑运算符的优先 ...

  7. Win10 64位+VS2015+Opencv3.3.0安装配置

    Win10 64位+VS2015+Opencv3.3.0安装配置 1.我们首先下载VS2015.OpenCV3.3.0. 1.1 VS2015下载 在官网https://visualstudio.mi ...

  8. 01.centos7环境准备

    博客为日常工作学习积累总结: 1.环境准备: 系统版本:CentOS-7-x86_64-Minimal-1810.iso 运行环境:虚拟机windows上的VM 15 系统安装:参照老男孩运维要求 2 ...

  9. jdbc之存储过程的调用和调用方法

    调用存储过程 调用存储过程的sql语句 {call 过程名称(参数列表)} conn = DbUtils.getConnection(); sql = "{call p_order_appr ...

  10. linux用户及文件管理

    帮助命令 whatis 命令  #显示命令的简短功能 man    命令  #查看手册页和命令描述 命令--help    #适用于外部命令 help    命令  #适用于内部命令 type 命令  ...