片段缓存

首先在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失效,所以在有内外缓存嵌套的时候注意失效时间

时间: 2024-10-29 09:22:02

片段缓存的相关文章

Yii2片段缓存详解

片段缓存 1 // ..../view/site/index.php页面 2 <?php 3 if($this->beginCache('cache')) { 4 echo "<p class='cache'>这里待会会被缓存</p>"; 5 $this->endCache(); 6 } 7 echo "<p class='no_cache'>这里不会被缓存</p>"; 8 ?> 片段缓存--过

Yii的缓存机制之片段缓存

一.首先在main.php配置缓存组件 在components里面添加cache项.代码如下: // application components 'components'=>array( 'user'=>array( // enable cookie-based authentication 'allowAutoLogin'=>true, ), 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=y

YII框架——片段缓存

顾名思义,片段缓存就是缓存网页中的片段内容. 一般用于缓存固定不变的内容,从而减少了从数据库中获取的时间操作. 1.启用片段缓存,将以beginCache('id');开头,以结尾. 例: <?php $this->begianCache('cachediv');?> <div id='cachediv'> 这里是缓存片段,如果片段内容被修改,页面依然显示缓存的内容,而不是修改后的内容. </div> <?php $this->endCache();?

YII 缓存之片段缓存

我们网站在进行访问的时候,有一些信息在相对一段时间之内是稳定,我们就把这样的信息放入缓存里边,这样用户每次来访问就是访问缓存的信息,对于大负载量的网站,可以明显提高网站的性能. YII本身缓存类型: 缓存分类: 片段缓存     一个页面划分为几个区域,这几个区域相对比较独立,设计缓存的时候,可以为每个区域独立开发制作缓存 页面缓存 :对整个页面进行缓存 动态缓存 数据缓存 使用片段缓存步奏: 1. 在程序里边设置缓存 <form name="compareForm" actio

Yii 2.0 使用片段缓存

网站首页footer中的菜单标题是从数据库读取并显示处理的. 也就是 <footer>标题里面是foreach.这样每个人打开网站就查询遍历效率会很低. <footer class="footer"> <div class="container"> <div class="row"> <div class="col-lg-10"> <div class=&quo

phalcon: 缓存片段,文件缓存,memcache缓存

几种缓存,需要用到前端配置,加后端实例配合着用 片段缓存: public function indexAction() { //渲染页面 $this->view->setTemplateAfter('common'); //缓存片段 //前端配置 $frontcache = new \Phalcon\Cache\Frontend\Output(array( "lifetime" => 86400 )); //后端处理 $cache = new \Phalcon\Cac

Web 开发后端缓存思路

数据写入缓存: 在数据库与服务端之间利用 redis 这是一个很常见的场景.比如文章的浏览数,每次文章被浏览时,浏览数都 +1.如果每次都回写数据库,不免数据量太大.加上数据库看似简单,其实做了不少关于一致性(请看官了解一下所谓[一致性],[base],[acid])的检查. 而同时,浏览数并不要求保证一致性,只要大概准确就行了. 所以这时候,我们可以先将浏览数写入 redis,满足一定条件后,再回写数据库. 比如,在 controller 中,让每次浏览都在 redis 上 +1,+1 完成后

YII 数据缓存

[数据缓存] 具体就是可以缓存变量信息 变量 缓存的使用 设置: Yii::app()->cache->set(名字,值,过期时间); 使用:Yii::app()->cache->get(名字); 删除:Yii::app()->cache->delete(名字); 清空:Yii::app()->cache->flush(); 简单示例: function actionHuan1(){ //设置变量缓存 Yii::app()->cache->set

PHP缓存技术

全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程.此种方式,在CMS系统中比较常见,比如dedecms:一种比较常用的实现方式是用输出缓存:Ob1.全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程.此种方式,在CMS系统中比较常见,比如dedecms:一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content