1 作用:数据库缓存类允许你把数据库查询结果保存在文本文件中以减少对数据库的访问。
2 工作原理:当页面被浏览时CI的查询缓存系统能够动态执行。如果缓存特性被激活,那么在此页面首次被加载时,数据库查询的结果对象将会被序列化并保存在你服务器的文本文件中。而页面再次被加载时缓存文件将会替代数据库查询。如此,在被缓存的页面中,你的数据库使用率会降至0,也就减轻了数据库的负载。
3 激活缓存步骤:
a.在服务器上创建一个可写的目录用来存放缓存文件。
b. 在文件 application/config/database.php 中$db['xxxx']['cachedir'] 设置其目录。
c. 在文件 application/config/database.php 中设置全局选项$db['xxxx']['cache_on']=’TRUE’,来激活。也可以用如下方法手动设置。
// 打开缓存开关
$this->db->cache_on();
$query = $this->db->query(“SELECT * FROM mytable”);
// 使下面这条查询不被缓存
$this->db->cache_off();
$query = $this->db->query(“SELECT * FROM members WHERE member_id = ‘$current_user’”);
// 开启另一个缓存
$this->db->cache_on();
$query = $this->db->query(“SELECT * FROM another_table”);
4 缓存文件的存储方式
缓存系统会在缓存存放目录中建立与被访问的URL所对应的子目录,同时把缓存文件存放在那个子目录中.缓存主目录就是在application/config/database.php 里面设置的缓存目录. 例如, 如果你正在浏览地址为 example.com/index.php/blog/comments的页面, 缓存系统会把所有生成的缓存文件放进一个以 blog+comments做为名称的文件夹里.
5 删除缓存
缓存文件不会过期,除非你删掉,否则任何被缓存了的查询会一直存在。缓存系统允许你按页面清除,或把所有缓存都清除掉。一般来说,可以在某些事件(比如向数据库添加了数据)发生时用下面的函数来清除缓存。
$this->db->cache_delete();
$this->db->cache_delete_all();删除所有缓存
例如:$this->db->cache_delete('/blog', 'comments');注意此处控制器名字前的斜杠'/'不可去掉,否则不能正确执行删除。
6 此外,需要注意的还有数据库缓存类一旦被激活后会随数据库驱动自动初始化。无需再手动加载。而且并非所有查询结果都能被缓存,只有 读类型(read-type) (SELECT) 查询会被缓存(因为只有这种查询会产生结果集)。