文章出處
文章列表
首先在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'=>'yii\caching\FileDependency', '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失效,所以在有內外緩存嵌套的時候注意失效時間
文章列表
全站熱搜