概述

这里只是简单讲一下用法,如果想更详细的了解,去看 官方手册 比较好。

片段缓存指的是缓存页面内容中的某个片段。例如,一个页面显示了逐年销售额的摘要表格, 可以把表格缓存下来,以消除每次请求都要重新生成表格 的耗时。片段缓存是基于数据缓存实现的。

初试牛刀

片段缓存主要在view中使用

// ..../view/site/index.php页面
<?php
if($this->beginCache('cache')) {echo "<p class='cache'>这里待会会被缓存</p>";$this->endCache();
}
echo "<p class='no_cache'>这里不会被缓存</p>";
?>

和数据缓存一样,每个片段缓存都需要一个唯一的名称。

过期时间

// ..../view/site/index.php页面
<?php
$duration = 15; // 设置过期秒数
if($this->beginCache('cache' , ['duration' => $duration])) {echo "<p class='cache'>这里待会会被缓存</p>";$this->endCache();
}
echo "<p class='no_cache'>这里不会被缓存</p>";
?>

依赖关系

和数据缓存一样,片段缓存的内容一样可以设置缓存依赖。例如 一段被缓存的文章,是否重新缓存取决于它是否被修改过。不过具体写法上略有不用。

// ..../view/site/index.php页面
<?php
$dependency = [ // 这里用文件依赖举例'class' => '\yii\caching\FileDependency','fileName' => 'robots.txt'
];
if($this->beginCache('cache' , ['dependency' => $dependency])) {echo "<p class='cache'>这里待会会被缓存</p>";$this->endCache();
}
echo "<p class='no_cache'>这里不会被缓存</p>";
?>

当对应依赖文件被修改时,缓存也被取消。

缓存开关

有时你可能只想在特定条件下开启片段缓存。

// ..../view/site/index.php页面
<?php
$enabled = false; // true[开启]|false[关闭]
if($this->beginCache('cache' , ['enabled' => $enabled])) { // 该片段代码可以说无效echo "<p class='cache'>这里待会会被缓存123</p>";$this->endCache();
}
echo "<p class='no_cache'>这里不会被缓存</p>";
?>

缓存嵌套

片段缓存可以被嵌套使用。一个片段缓存可以被另一个包裹。不过要注意的是外层的失效时间应该短于内层,外层的依赖条件应该低于内层,以确保最小的片段,返回的是最新的数据。

// ..../view/site/index.php页面
<?php
if($this->beginCache('cache')) {// ...在此生成内容...if ($this->beginCache('cache')) {// ...在此生成内容...$this->endCache();}// ...在此生成内容...$this->endCache();
}
?>

由于用法都一样,这里就不做详细演示。

Yii2片段缓存详解相关推荐

  1. Yii2数据缓存详解

    数据缓存是指将一些 PHP 变量存储到缓存中,使用时再从缓存中取回. 它也是更高级缓存特性的基础,例如查询缓存 和内容缓存. 缓存组件 数据缓存需要缓存组件提供支持,它代表各种缓存存储器, 例如内存, ...

  2. [面试专题]Web缓存详解

    Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提下可以大大加快网站加载速度. 降低服务器压力: ...

  3. MyBatis 一级缓存二级缓存详解

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) MyBatis 缓存详解 cache 缓存 缓存是一般的ORM 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力.跟Hibernat ...

  4. Hibernate二级缓存详解(转)

    Hibernate二级缓存详解(转) 本文转载 http://www.blogjava.net/supercrsky/articles/238580.html 与Session相对的是,Session ...

  5. vue里页面的缓存详解

    关于vue里页面的缓存详解 实用的例子ABC 往下查看 keep-alive是vue内置的一个组件,可以使被它包含的组件处于保留状态,或避免被重新渲染. 用法: 在keep-alive标签内部添加 i ...

  6. Spring循环依赖和三级缓存详解

    Spring循环依赖和三级缓存详解 Spring在启动过程中,使用到了三个map,称为三级缓存 我们可以这样理解,假设,我们只有一个缓存容器,并且缓存是直接开放给用户可以调用的,如果将未完成赋值的Be ...

  7. cpu二级缓存和一级缓存详解及区别(图解)

    cpu二级缓存和一级缓存详解及区别(图解) 2012-09-02 12:27:55|  分类: 硬件技术 |字号 订阅 处理器缓存的传输速率确实很高,然而还不足以取代内存的地位,这主要是由于缓存只是内 ...

  8. Mybatis二级缓存详解

    Mybatis二级缓存 Mybatis相关全览 一.简介 二.一级缓存 1.入口 2.演示 案例一: 案例二: 3.总结 三.二级缓存 1.入口 2.如何开启二级缓存 cache-ref配置 cach ...

  9. MyBatis 缓存详解-开启二级缓存的方法

    第一步:在mybatis-config.xml 中配置了(可以不配置,默认是true): <setting name="cacheEnabled" value="t ...

最新文章

  1. Yii学习笔记【2】
  2. python之socketserver实现并发
  3. apex图表使用饼图居中_ppt图表技巧:如何制作美观简洁的百分比饼图
  4. 洛谷 P2519 [HAOI2011]problem a
  5. flask tutorial = make a blog :) flask 搭建博客系统从零开始!
  6. php繁体拼音字母,php获取中文字符串的首字符拼音字母
  7. 计算机架构专业排名,全国大学计算机专业排名(转贴)
  8. mysql 混合模式,SQLServer2005混合模式登录配置(用户登录错误18452,233,4064)
  9. DeFi巨鲸0xb1向DeBank打赏5 ETH
  10. 从头搭建drbd+openfiler+corosync (二)
  11. python again语句_【python笔记 二 】python语句
  12. 算法导论12.2节习题解答
  13. web developer tips (71): 关于FastCGI 1.5beta几个新配置设置
  14. 华为鲲鹏HCIA认证 常考题
  15. 计算机硬件的基本组成(计算机组成原理3)
  16. 故障解决 | win10没声音及找不到Realtek高清音频管理器
  17. Eclipse 中Alt+/快捷键失效的解决办法。
  18. 万恶的BOM,万恶的微软
  19. 李宏毅机器学习课程 思维导图
  20. XUN·LEI 会员哒

热门文章

  1. nightwatch + selenium 基于浏览器的web自动化测试 教程(一)
  2. html保护环境主题,有关保护环境主题的手抄报内容
  3. css3 实现文字渐变
  4. Hyperledger Fabric 交易背书报错 no peer combination can satisfy the endorsement policy
  5. 大文件分片、并发上传,断点续传,秒传 第二弹
  6. C# Conditional 特性
  7. 人人保险篇|用“保险”开启了“财富自由”的小目标
  8. 苹果宣布iPhone 4S上市三天销量突破400万部
  9. Android App 中正确地使用 Splash Screen(译)
  10. 美国和英国指责俄罗斯GRU对格鲁吉亚实施全面网络攻击