Yii2片段缓存详解

12 篇文章 0 订阅
概述

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

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

初试牛刀

片段缓存主要在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();
}
?>

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值