1 教程-内容提要
1.1 CodeIgniter3.1教程——开始
1.2 加载静态内容
1.3 读取新闻条目
1.4 创建新闻条目
2 常规主题
2.1 CodeIgniter URL
2.2 控制器
2.3 保留名称
2.4 视图
2.5 模型
2.6 辅助函数
2.7 使用 CodeIgniter 类库
2.8 创建类库
2.9 使用 CodeIgniter 驱动器
2.10 创建驱动器
2.11 创建核心系统类
2.12 创建附属类
2.13 钩子 - 扩展框架核心
2.14 自动加载资源
2.15 公共函数
2.16 兼容性函数
2.17 URI 路由
2.18 错误处理
2.19 网页缓存
2.20 程序分析
2.21 以 CLI 方式运行
2.22 管理你的应用程序
2.23 处理多环境
2.24 在视图文件中使用 PHP 替代语法
2.25 安全
2.26 PHP 开发规范
3 类库参考
3.1 基准测试类
3.2 缓存驱动器
3.3 日历类
3.4 购物车类
3.5 配置类
3.6 Email 类
3.7 加密类(废弃)
3.8 加密类(新版)
3.9 文件上传类
3.10 表单验证类
3.11 FTP 类
3.12 图像处理类
3.13 输入类
3.14 Javascript 类
3.15 语言类
3.16 加载器类
3.17 迁移类
3.18 输出类
3.19 分页类
3.20 模板解析类
3.21 安全类
3.22 Session 类
3.23 HTML 表格类
3.24 引用通告类
3.25 排版类
3.26 单元测试类
3.27 URI 类
3.28 用户代理类
3.29 XML-RPC 与 XML-RPC 服务器类
3.30 Zip 编码类
4 数据库参考
4.1 数据库快速入门: 示例代码
4.2 数据库配置
4.3 连接你的数据库
4.4 查询
4.5 生成查询结果
4.6 查询辅助函数
4.7 查询构造器类
4.8 事务
4.9 数据库元数据
4.10 自定义函数调用
4.11 查询缓存
4.12 数据库工厂类
4.13 数据库工具类
4.14 数据库驱动器参考
5 辅助函数参考
5.1 数组辅助函数
5.2 验证码辅助函数
5.3 Cookie 辅助函数
5.4 日期辅助函数
5.5 目录辅助函数
5.6 下载辅助函数
5.7 邮件辅助函数
5.8 文件辅助函数
5.9 表单辅助函数
5.10 HTML 辅助函数
5.11 Inflector 辅助函数
5.12 语言辅助函数
5.13 数字辅助函数
5.14 路径辅助函数
5.15 安全辅助函数
5.16 表情辅助函数(废弃)
5.17 字符串辅助函数
5.18 文本辅助函数
5.19 排版辅助函数
5.20 URL 辅助函数
5.21 XML 辅助函数

缓存驱动器

2017-12-03 19:56:36
linefo
555
最后编辑:linefo 于 2017-12-03 20:53:05

缓存驱动器

CodeIgniter 提供了几种最常用的快速缓存的封装,除了基于文件的缓存, 其他的缓存都需要对服务器进行特殊的配置,如果配置不正确,将会抛出 一个致命错误异常(Fatal Exception)。

使用示例

下面的示例代码用于加载缓存驱动器,使用 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;

你也可以设置 key_prefix 参数来给缓存名添加前缀,当你在同一个环境下运行多个应用时,它可以避免冲突。

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

$this->cache->get('foo'); // Will get the cache entry named 'my_foo'

类参考

class CI_Cache
is_supported($driver)
参数:
  • $driver (string) -- the name of the caching driver
返回:

TRUE if supported, FALSE if not

返回类型:

bool

当使用 $this->cache->get() 方法来访问驱动器时该方法会被自动调用,但是,如果你使用了某些个人的驱动器, 应该先调用该方法确保这个驱动器在服务器环境下是否被支持。

if ($this->cache->apc->is_supported())
{
    if ($data = $this->cache->apc->get('my_cache'))
    {
        // do things.
    }
}
get($id)
参数:
  • $id (string) -- Cache item name
返回:

Item value or FALSE if not found

返回类型:

mixed

该方法用于从缓存中获取一项条目,如果获取的条目不存在,方法返回 FALSE 。

$foo = $this->cache->get('my_cached_item');
save($id, $data[, $ttl = 60[, $raw = FALSE]])
参数:
  • $id (string) -- Cache item name
  • $data (mixed) -- the data to save
  • $ttl (int) -- Time To Live, in seconds (default 60)
  • $raw (bool) -- Whether to store the raw value
返回:

TRUE on success, FALSE on failure

返回类型:

string

该方法用于将一项条目保存到缓存中,如果保存失败,方法返回 FALSE 。

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

注解

参数 $raw 只有在使用 APC 和 Memcache 缓存时才有用, 它用于 increment()decrement() 方法。

delete($id)
参数:
  • $id (string) -- name of cached item
返回:

TRUE on success, FALSE on failure

返回类型:

bool

该方法用于从缓存中删除一项指定条目,如果删除失败,方法返回 FALSE 。

$this->cache->delete('cache_item_id');
increment($id[, $offset = 1])
参数:
  • $id (string) -- Cache ID
  • $offset (int) -- Step/value to add
返回:

New value on success, FALSE on failure

返回类型:

mixed

对缓存中的值执行原子自增操作。

// 'iterator' has a value of 2

$this->cache->increment('iterator'); // 'iterator' is now 3

$this->cache->increment('iterator', 3); // 'iterator' is now 6
decrement($id[, $offset = 1])
参数:
  • $id (string) -- Cache ID
  • $offset (int) -- Step/value to reduce by
返回:

New value on success, FALSE on failure

返回类型:

mixed

对缓存中的值执行原子自减操作。

// 'iterator' has a value of 6

$this->cache->decrement('iterator'); // 'iterator' is now 5

$this->cache->decrement('iterator', 2); // 'iterator' is now 3
clean()
返回:TRUE on success, FALSE on failure
返回类型:bool

该方法用于清空整个缓存,如果清空失败,方法返回 FALSE 。

$this->cache->clean();
cache_info()
返回:Information on the entire cache database
返回类型:mixed

该方法返回整个缓存的信息。

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

注解

返回的信息以及数据结构取决于使用的缓存驱动器。

get_metadata($id)
参数:
  • $id (string) -- Cache item name
返回:

Metadata for the cached item

返回类型:

mixed

该方法用于获取缓存中某个指定条目的详细信息。

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

注解

返回的信息以及数据结构取决于使用的缓存驱动器。

驱动器

可选 PHP 缓存(APC)

上述所有方法都可以直接使用,而不用在加载驱动器时指定 adapter 参数,如下所示:

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

关于 APC 的更多信息,请参阅 http://php.net/apc

基于文件的缓存

和输出类的缓存不同的是,基于文件的缓存支持只缓存视图的某一部分。使用这个缓存时要注意, 确保对你的应用程序进行基准测试,因为当磁盘 I/O 频繁时可能对缓存有负面影响。

上述所有方法都可以直接使用,而不用在加载驱动器时指定 adapter 参数,如下所示:

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

Memcached 缓存

可以在 memcached.php 配置文件中指定多个 Memcached 服务器,配置文件位于 application/config/ 目录。

上述所有方法都可以直接使用,而不用在加载驱动器时指定 adapter 参数,如下所示:

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

关于 Memcached 的更多信息,请参阅 http://php.net/memcached

WinCache 缓存

在 Windows 下,你还可以使用 WinCache 缓存。

上述所有方法都可以直接使用,而不用在加载驱动器时指定 adapter 参数,如下所示:

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

关于 WinCache 的更多信息,请参阅 http://php.net/wincache

Redis 缓存

Redis 是一个在内存中以键值形式存储数据的缓存,使用 LRU(最近最少使用算法)缓存模式, 要使用它,你需要先安装 Redis 服务器和 phpredis 扩展

连接 Redis 服务器的配置信息必须保存到 application/config/redis.php 文件中,可用参数有:

$config['socket_type'] = 'tcp'; //`tcp` or `unix`
$config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type
$config['host'] = '127.0.0.1';
$config['password'] = NULL;
$config['port'] = 6379;
$config['timeout'] = 0;

上述所有方法都可以直接使用,而不用在加载驱动器时指定 adapter 参数,如下所示:

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

关于 Redis 的更多信息,请参阅 http://redis.io

虚拟缓存(Dummy Cache)

这是一个永远不会命中的缓存,它不存储数据,但是它允许你在当使用的缓存在你的环境下不被支持时, 仍然保留使用缓存的代码。