目录搜索
欢迎目录快速参考图基本信息服务器要求许可协议变更记录关于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
上一篇:下一篇: