当前位置: 首页 > news >正文

Yii框架官方指南系列28——缓存:概览

为什么80%的码农都做不了架构师?>>>   hot3.png

缓存是提升Web应用性能的简便有效的方式。通过将相对静态的数据存储到缓存并在收到请求时取回缓存,我们便节省了生成这些数据所需的时间。

在 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 访问。

Yii 提供了不同的缓存组件,可以将缓存数据存储到不同的媒介中。例如, CMemCache 组件封装了 PHP 的 memcache 扩展并使用内存作为缓存存储媒介。 CApcCache 组件封装了 PHP APC 扩展; 而 CDbCache 组件会将缓存的数据存入数据库。下面是一个可用缓存组件的列表:

  • CMemCache: 使用 PHP memcache 扩展.

  • CApcCache: 使用 PHP APC 扩展.

  • CXCache: 使用 PHP XCache 扩展。注意,这个是从 1.0.1 版本开始支持的。

  • CEAcceleratorCache: 使用 PHP EAccelerator 扩展.

  • CDbCache: 使用一个数据表存储缓存数据。默认情况下,它将创建并使用在 runtime 目录下的一个 SQLite3 数据库。 你也可以通过设置其 connectionID 属性指定一个给它使用的数据库。

  • CZendDataCache: 使用 Zend Data Cache 作为后台缓存媒介。注意,这个是从 1.0.4 版本开始支持的。

  • CFileCache: 使用文件存储缓存数据。这个特别适合用于存储大块数据(例如页面)。注意,这个是从 1.0.6 版本开始支持的。

  • CDummyCache: 目前 dummy 缓存并不实现缓存功能。此组件的目的是用于简化那些需要检查缓存可用性的代码。 例如,在开发阶段或者服务器尚未支持实际的缓存功能,我们可以使用此缓存组件。当启用了实际的缓存支持后,我们可以切换到使用相应的缓存组件。 在这两种情况中,我们可以使用同样的代码Yii::app()->cache->get($key) 获取数据片段而不需要担心 Yii::app()->cache 可能会是 null。此组件从 1.0.5 版开始支持。

提示: 由于所有的这些缓存组件均继承自同样的基类 CCache,因此无需改变使用缓存的那些代码就可以切换到使用另一种缓存方式。

缓存可以用于不同的级别。最低级别中,我们使用缓存存储单个数据片段,例如变量,我们将此称为 数据缓存(data caching)。下一个级别中,我们在缓存中存储一个由视图脚本的一部分生成的页面片段。 而在最高级别中,我们将整个页面存储在缓存中并在需要时取回。

在接下来的几个小节中,我们会详细讲解如何在这些级别中使用缓存。

注意: 按照定义,缓存是一个不稳定的存储媒介。即使没有超时,它也并不确保缓存数据一定存在。 因此,不要将缓存作为持久存储器使用。(例如,不要使用缓存存储 Session 数据)。

缓存系列文章:

Yii框架官方指南系列29——缓存:数据缓存

Yii框架官方指南系列30——缓存:片段缓存(Fragment Caching)

Yii框架官方指南系列31——缓存:页面缓存

Yii框架官方指南系列32——缓存:动态内容(Dynamic Content)


转载于:https://my.oschina.net/tlkt/blog/210541

相关文章:

  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • 一个表单对应多个提交按钮,每个提交按钮对应不同的行为
  • MySQL用户中的%到底包不包括localhost?
  • tomcat集群时统计session与在线人数
  • 初探G6, 切换数据时保证图位置不变
  • 常见div+css网页布局(float,absolute)
  • 用PyTorch创建一个图像分类器?So easy!(Part 1)
  • 【Leetcode】Path Sum II
  • docker学习笔记
  • 3、开启debug调试模式
  • 为什么BAT公司使用微服务架构,资深架构师来告诉你原因!
  • mysql学习【第4篇】:数据库之数据类型
  • python字典操作总结
  • hadoop Hive(9)
  • 启动和测试oracle是否安装成功
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • avalon2.2的VM生成过程
  • CEF与代理
  • C学习-枚举(九)
  • JavaScript服务器推送技术之 WebSocket
  • JS笔记四:作用域、变量(函数)提升
  • JS变量作用域
  • PAT A1092
  • Python进阶细节
  • tensorflow学习笔记3——MNIST应用篇
  • 创建一种深思熟虑的文化
  • 大主子表关联的性能优化方法
  • 前端自动化解决方案
  • 三栏布局总结
  • 使用docker-compose进行多节点部署
  • 再谈express与koa的对比
  • #etcd#安装时出错
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (4)STL算法之比较
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (三分钟)速览传统边缘检测算子
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • ***原理与防范
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net 按比例显示图片的缩略图
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .Net7 环境安装配置
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • // an array of int
  • @Bean有哪些属性
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [20150321]索引空块的问题.txt