CodeIgniter清除数据库缓存和页面缓存的方法

2013-04-14 11:14:34来源:博客园作者:@胡子锅

最近接触到了CodeIgniter开源轻量级架构,集合了开发中常用的类和功能函数,关于CodeIgniter的缓存总结有以下几点:

最近接触到了CodeIgniter开源轻量级架构,集合了开发中常用的类和功能函数,关于CodeIgniter的缓存总结有以下几点:

1. 数据库缓存

数据库缓存主要是针对于SELECT查询

// 打开缓存开关
$this->db->cache_on();
$query1 = $this->db->query("SELECT * FROM mytable");

// 使下面这条查询不被缓存
$this->db->cache_off();
$query2 = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'");

// 再次打开缓存开关
$this->db->cache_on();
$query3 = $this->db->query("SELECT * FROM another_table");

这样query1和query3就被缓存在文件中了,缓存的路径根据您的URL而定,如example.com/index.php/blog/comments的页面, 缓存系统会把所有生成的缓存文件放进一个以 blog+comments做为名称的文件夹里. 如果您要删除关于刚才提到的这个例子与之对应的缓存文件 需要执行以下代码:

$this->db->cache_delete('blog', 'comments');//$this->db->cache_delete('blog', 'comments')#来删除缓存

如果要清除所有数据库缓存:

$this->db->cache_delete_all();

*其cache模式在于针对不同的uri就会生成cache文件,如果URL中参数不同,则 cache文件就会不同,从而产生了漏洞。如果访问者构建自动生成URI,不断向服务器发起请求,就会瞬间产生大量的垃圾文件,导致系统文件臃肿。

2. 页面缓存

$this->output->cache(n); // 请确保application/cache可写

n 是你希望缓存更新的 分钟 数。可以使用 m/60 来精确到秒,例如 1/60 ,则是精确到 1秒

3. 序例化缓存到文件

$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;

延伸阅读:http://codeigniter.org.cn/user_guide/drivers/caching.html

关键词:CodeIgniter缓存

赞助商链接: