目录 搜索
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
文字

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

缓存适配器

注:在2.0.3以前有bug,请下载最新版本的CI。

CodeIgniter提供了多种目前业界流行的快速动态缓存组件的封装类。除了基于纯文本的缓存(文件缓存)外,其他缓存组件均需对服务器环境进行正确配置才能使用,否则程序会抛出致命异常(Fatal Exception)错误。

目录

  • 用法举例
  • 函数速查

支持的缓存适配器

  • Alternative PHP Cache (APC) 缓存
  • 纯文本缓存
  • Memcached缓存
  • 虚拟缓存

用法举例

下面这个例子:首先加载缓存适配器,然后指定 APC 作为适配器优先使用的缓存实现,同时,我们指定文本缓存作为替代方案。这样,在一些服务器不支持APC的情况下(如国内的虚拟主机),我们可以使用替代方案保证程序正常运行。

$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));

if ( ! $foo = $this->cache->get('foo'))
{
     echo 'Saving to the cache!<br />';
     $foo = 'foobarbaz!';

     // Save into the cache for 5 minutes
     $this->cache->save('foo', $foo, 300);
}

echo $foo;

译者注:为了便于理解上面的代码,我们不妨举个例子。缓存适配器,我们可以理解为一个“通电的插座”;而APC缓存,相当于我们希望插在插座上使用的空调;文本缓存我们可以理解与空调功能相同但效率却完全不同的电风扇。

Function Reference

is_supported(driver['string'])

如果你通过 $this->cache->get() 来访问缓存适配器,此函数将自动触发。但是,如果你希望有针对性的使用某个具体的缓存实现(如下例中的 APC),请确保调用此函数,用来检查服务器环境是否支持这种缓存类型。

if ($this->cache->apc->is_supported())
{
     if ($data = $this->cache->apc->get('my_cache'))
     {
          // do things.
     }
}

get(id['string'])

此函数将尝试从缓存系统中获取指定的缓存项。如果缓存不存在,或者超过缓存期限,则返回 FALSE

$foo = $this->cache->get('my_cached_item');

save(id['string'], data['mixed'], ttl['int'])

此函数尝试将一个缓存项存储到对应的缓存系统中。如果存储失败,则返回FALSE

第三个参数(可选项)指定了缓存的存活时间,默认为60秒。

$this->cache->save('cache_item_id', 'data_to_cache');

delete(id['string'])

此函数尝试从缓存系统中删除某个指定的缓存项。如果删除失败,则返回FALSE

$this->cache->delete('cache_item_id');

clean()

此函数用来清空所有缓存。如果清空失败,则返回 FALSE.

$this->cache->clean();

cache_info()

此函数将返回所有缓存信息.

var_dump($this->cache->cache_info());

get_metadata(id['string'])

此函数将返回缓存系统中指定缓存项的详细信息。

var_dump($this->cache->get_metadata('my_cached_item'));

Drivers

Alternative PHP Cache (APC) Caching

All of the functions listed above can be accessed without passing a specific adapter to the driver loader as follows:

$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);

For more information on APC, please see http://php.net/apc

基于文件的缓存

Unlike caching from the Output Class, 基于文件的缓存可以对view页面分块缓存. 不过使用时需要小心,应该通过对程序进行评测,以确保由于磁盘I/O增加所导致的性能下降相对于缓存所带来的性能提升是值得的。

All of the functions listed above can be accessed without passing a specific adapter to the driver loader as follows:

$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);

Memcached 缓存

使用分布式 Memcached 服务器 可以通过配置文件: memcached.php 来配置,该文件在 application/config/ 目录下.

All of the functions listed above can be accessed without passing a specific adapter to the driver loader as follows:

$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);

若想了解更多关于 Memcached的信息, 请参考 http://php.net/memcached

Dummy Cache

This is a caching backend that will always 'miss.' It stores no data, but lets you keep your caching code in place in environments that don't support your chosen cache.

 

翻译贡献者: amos, cnsaturn, Hex, LSvKing, qixingyue, tangjianft
最后修改: 2012-03-07 14:51:23
上一篇: 下一篇: