YII 缓存之片段缓存

我们网站在进行访问的时候,有一些信息在相对一段时间之内是稳定,我们就把这样的信息放入缓存里边,这样用户每次来访问就是访问缓存的信息,对于大负载量的网站,可以明显提高网站的性能。

YII本身缓存类型:

缓存分类:

片段缓存     一个页面划分为几个区域,这几个区域相对比较独立,设计缓存的时候,可以为每个区域独立开发制作缓存

页面缓存 :对整个页面进行缓存

动态缓存

数据缓存

使用片段缓存步奏:

1. 在程序里边设置缓存

                        <form name="compareForm" action="compare.php" method="post" onsubmit="return compareGoods(this);">
                            <div class="clearfix goodsBox" style="border: medium none; padding: 11px 0pt 10px 5px;">
                                <!--片段缓存 实现-->
                                <?php
                                /*if($this->beginCache('缓存名称')){
                                 * duration 设置过期时间
                                 * varyByParam 缓存变化
                                 * dependency 缓存依赖
                                 */
                                if($this->beginCache('goods',array(
                                    'duration'=>3600,
                                    'varyByParam' => array('page'),
                                    'dependency' =>array(
                                        'class'=>'system.caching.dependencies.CDbCacheDependency',
                                        'sql'=>'select sum(goods_price) from {{goods}}',
                                    )
                                ))){
                                ?>
                                <?php
                                foreach($goods_infos as $_v){
                                ?>
                                <div class="goodsItem">
                                    <a href="./index.php?r=goods/detail&id=<?php echo $_v->goods_id ?>" target="_blank"><img src="<?php echo $_v->goods_big_img; ?>" alt="<?php echo $_v->goods_name ?>" class="goodsimg"></a><br />
                                    <p><a href="#" title="诺基亚N85"><?php echo $_v->goods_name ?></a></p>
                                    <font class="market_s">¥<?php echo $_v->goods_price ?>元</font><br />
                                    <font class="shop_s">¥<?php echo $_v->goods_price ?>元</font><br />
                                    <a href="#"><img src="<?php echo IMG_URL; ?>goumai.gif"></a>     
                                    <a href="#"><img src="<?php echo IMG_URL; ?>shoucang.gif"></a>
                                </div>
                                <?php
                                }
                                ?>
                                <?php $this -> endCache();} ?>

                            </div>
                        </form>

2. 在主配置文件main.php里边配置缓存组件cache(在这个地方决定使用哪种缓存)
  我们的缓存是文件缓存,缓存的信息在目录runtime存放

设置缓存文件的过期时间

Duration   ()

我们为缓存文件设置过期时间,在没有过期的时候系统都会使用缓存文件,如果已经过期,那么系统要重新生成缓存文件。

缓存变化:

我们的商品列表有实现片段缓存,那么在访问其他其它页码信息的时候也是访问这个缓存页面,因为,每页信息的路由都是一样的(goods/category),那么系统会误认为当前系统访问的页面是一个页面。当时页面的page参数是不一样的。

因此我们需要根据参数的变化生成不同的缓存文件。

根据页码不同,生成不同缓存文件:

缓存依赖:

我们的商品信息缓存可以自定义设置过期时间,根据具体需求业务类型决定,如果商品信息在没有过期之内已经变化了(数据库给更改的),这时缓存文件还没有过期,我们需要及时更新缓存文件(即使没有过期)以免误导客户,这种情况我们可以通过缓存依赖来实现。

缓存依赖条件:我们依赖的条件是总的商品价格,如果总价格发生变化,那么有可能是商品的信息有增加或减少的情况,或商品价格被修改。

Duration、varyByParam、dependency这个几个属性在哪?

System.web.widgets.CoutputCache.php

时间: 2024-11-19 00:18:40

YII 缓存之片段缓存的相关文章

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();?

片段缓存

首先在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->endCach

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

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

Yii的自带缓存的使用

Yii的自带缓存都继承CCache 类, 在使用上基本没有区别缓存基础类 CCache 提供了两个最常用的方法:set() 和 get().要在缓存中存储变量 $value,我们选择一个唯一 ID 并调用 set() 来存储它: Yii::app()->cache->set($id, $value); 被缓存的数据会一直保留在缓存中,直到因一些缓存策略而被删除(比如缓存空间满了,删除最旧的数据).要改变这一行为,我们还可以在调用 set() 时加一个过期参数,这样数据过一段时间就会自动从缓存中

【缓存】系统缓存全解析 (上)

有时候总听到网友说网站运行好慢,不知如何是好:有时候也总见到一些朋友写的网站功能看起来非常好,但访问性能却极其的差.没有"勤俭节约"的意识,势必会造成"铺张浪费".如何应对这种情况,充分利用系统缓存则是首要之道. 系统缓存有什么好处呢?举个简单的例子,你想通过网页查询某些数据,而这些数据并非实时变化,或者变化的时间是有期限的.例如查询一些历史数据.那么每个用户每次查的数据都是一样的.如果不设置缓存,ASP.NET也会根据每个用户的请求重复查询n次,这就增加了不必要的

本地应用缓存算法和缓存策略的介绍

特别声明:该文章是 本人在网上搜索到的一些资料,稍作整理而成的,还望大家不要误会,具体出自于那本人也已经忘记.还请大家不要误会!!!   通过设计良好的数据分块.预取.替换.更新等算法来提高对缓存内容的命中率和一致性. 1)数据分块      Memcached默认情况下采用了名为Slab Allocator的机制分配.管理内存.在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的.但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下,会导致操

asp.net 服务器端缓存与客户端缓存 [转]

介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管 理,有的提到的cache管理,这里我比较喜欢cache管理,因为本人比较喜“cache”这个词.但是状态管理和cache管理这两个在概念和意义上 是不同的,下面就让我们来讨论下两都在各个方面的不同之处. 虽然cache管理并不存在于Windows程序,但在web环境中已经得到巨大的应用.自从HTTP变成无协议以来,在WEB上要想分辨两个不同请求变