zoukankan      html  css  js  c++  java
  • yii 缓存技术

    ---恢复内容开始---

    yii缓存技术

    闲来无事,研究下 yii缓存。

    缓存是用于提升网站性能的一种即简单又有效的途径。通过存储相对静态的数据至缓存以备所需,我们可以省去生成这些数据的时间。

    在 Yii 中使用缓存主要包括配置和访问缓存组件。如下的应用配置指定了一个使用两台缓存服务器的 memcache 缓存组件: 

    array(
    'components'=>array(
             'cache'=>array(
                   'class'=>'system.caching.CMemCache',
                   'servers'=>array(
                   array(
                         'host'=>'server1',
                         'port'=>11211,
                  'weight'=>60
                ),
               array(
                'host'=>'server2',
                ' port'=>11211,
                'weight'=>40
              ),                       ),     ),   ),

    );

    程序运行的时候可以通过 Yii::app()->cache 来访问缓存组件.

    缓存可以在不同的级别使用。在最低级别,我们使用缓存来存储单个数据,比如一个变量,我们把它叫做 数据缓存。往上一级,我们缓存一个由视图脚本生成的页面片断。在最高级别,我们存储整个页面以便需要的时候直接从缓存读取。
    接下来我们将阐述如何在这些级别上使用缓存。

    注意: 按定义来讲,缓存是一个不稳定的存储媒介,它不保证缓存一定存在——不管该缓存是否过期。所以,不要使用缓存进行持久存储(比如,不要使用缓存来存储 SESSION 数据)。

    数据缓存
    数据缓存也就是在缓存中存储一些 PHP 变量,过一会再取出来。缓存基础类 CCache 提供了两个最常用的方法:set() 和get()。
    要在缓存中存储变量 $value,我们选择一个唯一 ID 并调用 set() 来存储它:

    Yii::app()->cache->set($id, $value);

    被缓存的数据会一直保留在缓存中,直到因一些缓存策略而被删除(比如缓存空间满了,删除最旧的数据)。要改变这一行为,我们还可以在调用 set() 时加一个过期参数,这样数据过一段时间就会自动从缓存中清除。 // 在缓存中保留该值最多 30 秒

    Yii::app()->cache->set($id, $value, 30);

    当我们稍后需要访问该变量时(不管是不是同一 Web 请求),我们调用 get() (传入 ID)来从缓存中获取它。如果返回值为 false,说明该缓存不可用,需要我们重新生成它。 

    $value=Yii::app()->cache->get($id); if($value===false) { 

          // 因为在缓存中没找到,重新生成 $value
          // 再缓存一下以备下次使用
          // Yii::app()->cache->set($id,$value);
    }

    为一个要缓存的变量选择 ID 时,确保该 ID 在应用中是唯一的。不必保证 ID 在跨应用的情况下保证唯一,因为缓存组件有足够的智能来区分不同应用的缓存 ID。

    要从缓存中删除一个缓存值,调用 delete();

    要清空所有缓存,调用 flush()。调用 flush() 时要非常小心,因为它会把其它应用的缓存也清空

    提示: 因为 CCache 实现了 ArrayAccess 接口,可以像数组一样使用缓存组件。例如:

     $cache=Yii::app()->cache;
     $cache['var1']=$value1; // 相当于: $cache->set('var1',$value1);
     $value2=$cache['var2']; // 相当于: $value2=$cache->get('var2');

    ---恢复内容结束---

  • 相关阅读:
    关于任意文件下载及上传漏洞
    一文掌握XSS
    WEB层知识点
    课程交流网站项目架构
    docker容器中启动uwsgi秒退
    mongoDB中update_one与find_one_update异同
    Vue集成CKEditor5源代码
    Vue的index.html与其他静态文件分离部署
    scrapy-redis分布式爬虫使用及docker swarm集群部署
    django中form组件的校验时raise ValidationError与self.add_error异同
  • 原文地址:https://www.cnblogs.com/xiaoxiao2014/p/3605221.html
Copyright © 2011-2022 走看看