片段缓存

首先在controller中直接执行

return  $this->renderPartial('index');

然后在相应的view中的index文件中:

 1 <?php if($this->beginCache('cache_div')){?>
 2 <div id="cache_div">
 3     <div>这里待会会被缓存</div>
 4 </div>
 5 <?php
 6     $this->endCache();}
 7 ?>
 8 <div id="no_cache_div">
 9     <div>这里不会被缓存</div>
10 </div>

这样,在beginCache和endCache之间的代码会被缓存,而id为 no_cache_div 中的内容则不会被缓存

我们在index中的代码进行修改为:

 1 <?php if($this->beginCache('cache_div')){?>
 2 <div id="cache_div">
 3     <div>这里待会会被缓存fefefef</div>
 4 </div>
 5 <?php
 6     $this->endCache();}
 7 ?>
 8 <div id="no_cache_div">
 9     <div>这里不会被缓存fefefef</div>
10 </div>

然后继续刷新页面,发现id为cache_div中的内容不会加上fefefef而id为 no_cache_div 中的内容则会加上fefefef

关于片段缓存的设置

1、设置缓存失效的时间

在view里面的index文件里,beginCache的第二个参数设置duration,然后给duration设置时间

<?php
$duration=15;
?>

<?php if($this->beginCache('cache_div',['duration'=>$duration])){?>
<div id="cache_div">
    <div>这里待会会被缓存</div>
</div>
<?php
    $this->endCache();}
?>

2、设置缓存的依赖文件

beginCache的第二个参数设置为dependency

<?php

$dependency = [
    'class'=>'yiicachingFileDependency',
    'fileName'=>'hw.txt'
];
?>


<?php if($this->beginCache('cache_div',['dependency'=>$dependency])){?>
<div id="cache_div">
    <div>这里待会会被缓存</div>
</div>
<?php
    $this->endCache();}
?>

其中hw.txt存放在web目录下,当改变该目录中的内容,则该缓存失效

3、是否开启缓存

 1 <?php
 2 $enabled=true;
 3 ?>
 4 
 5 <?php if($this->beginCache('cache_div',['enabled'=>$enabled])){?>
 6 <div id="cache_div">
 7     <div>这里待会会被缓存defrfr</div>
 8 </div>
 9 <?php
10     $this->endCache();}
11 ?>

片段缓存嵌套:

 1 <?php if($this->beginCache('cache_div',['duration'=>20])) { ?>
 2 
 3     <div id='cache_outer_div'>
 4         <div>这里是外层,待会会被缓存</div>
 5 
 6         <?php if ($this->beginCache('cache_inner_div', ['duration'=> 1])) { ?>
 7             <div id='cache_inner_div'>
 8                 这里是内层,待会会被缓存
 9             </div>
10             <?php
11             $this->endCache();
12         }
13         ?>
14     </div>
15     <?php
16     $this->endCache();
17 }
18 ?>

从中可以看出外层的缓存是20s后失效,但是里面的缓存是1s失效,所以在有内外缓存嵌套的时候注意失效时间

原文地址:https://www.cnblogs.com/jacson/p/4760766.html