用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8028|回复: 6
收起左侧

[已过期] 求助:CI output cache ,数据库缓存类的用法

[复制链接]
发表于 2008-10-4 11:14:01 | 显示全部楼层 |阅读模式
研究CI有一段时间,也用CI做过一些站,主要是个别功能模块。没有用过cache类东西。
今天突然想起,看一下ci的缓存实现方式,可是找不到具体的说法。
我看了,CI里有两个地方是接近数据缓存的实现,一个是view输出缓存,一个是数据库缓存类.
1,在view输出缓存里,有个output之类的东西,可是手册里没有系统的说明, 只说明让用户最后得到所有view输出的html.
一般缓存功能都涉及到命名,保存路径,过期时间,访问等管理功能,可是CI里没有讲到(做到)。大家都知道,cache实现,可是网站的重点之重,
也是走向一个好框架的第一步,希望CI在cache功能上下点功夫,集成强大一点的cache类。

2,数据库缓存类,CI倒是做了,可是我看不明白,它说得好笼统,不明白如何实现,请大侠们给个实现例子。
发表于 2008-10-4 11:26:27 | 显示全部楼层
我是在controller的构造函数里用cache的
  1. <?php

  2. class News extends Controller {

  3.         function News()
  4.         {
  5.                 parent::Controller();
  6.                 $this->load->model('News_model');
  7.                 $this->load->library('layout');
  8.                 $this->output->cache(10);
  9.         }
复制代码
这样就会让整个控制器下的所有页面都缓存10分钟。缓存存放在system/cache下,也可以通过config/config.php的$config['cache_path']调整cache存放的位置。确实可以提高效率,淡水测试时,没用是花费0.0359 seconds,用了后花费0.0054 seconds:)
发表于 2008-10-5 18:31:28 | 显示全部楼层
在你的模型里操作数据库的相关代码 前后加上

$this->db->cache_on();
$this->db->query('select a from a_table order by id desc');
$this->db->cache_off();


这条查询结果就会被缓存

config/database.php 里面
$db['default']['cachedir'] = ""; 默认
改为
$db['default']['cachedir'] = "./cache";

cache 位置为 网站根目录(酌情修改)

数据库cache 不同于 视图cache
不可以设置刷新时间 一旦cache 要想更新必须用
$this->db->cache_delete() 来删除

具体的例子 手册里面有 我之前大概的翻译了下...
发表于 2008-10-5 19:23:52 | 显示全部楼层
自己做靜態比較好....
发表于 2009-2-22 03:10:56 | 显示全部楼层
页面缓存我是弄懂了
但就是这个数据库缓存,不是很明白
看手册里分AR缓存,和查询缓存,我看写法都一样。但不知是不是相同的;
还就是根据手册和LS的大大们说的:如果数据库缓存了生成的缓存,要自己手动写代码删除缓存,下次访问时程序才会将新数据缓存起来,是这样么?
发表于 2011-1-29 10:33:34 | 显示全部楼层
最近也在看这块,学到不少东东
发表于 2012-4-6 13:56:37 | 显示全部楼层
mark 下

本版积分规则