itlong 发表于 2008-10-4 11:14:01

求助:CI output cache ,数据库缓存类的用法

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

2,数据库缓存类,CI倒是做了,可是我看不明白,它说得好笼统,不明白如何实现,请大侠们给个实现例子。

kissmumu 发表于 2008-10-4 11:26:27

我是在controller的构造函数里用cache的<?php

class News extends Controller {

        function News()
        {
                parent::Controller();
                $this->load->model('News_model');
                $this->load->library('layout');
                $this->output->cache(10);
        }这样就会让整个控制器下的所有页面都缓存10分钟。缓存存放在system/cache下,也可以通过config/config.php的$config['cache_path']调整cache存放的位置。确实可以提高效率,淡水测试时,没用是花费0.0359 seconds,用了后花费0.0054 seconds:)

yz20sui 发表于 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() 来删除

具体的例子 手册里面有 我之前大概的翻译了下...

xjflyttp 发表于 2008-10-5 19:23:52

自己做靜態比較好....

漫无目的 发表于 2009-2-22 03:10:56

页面缓存我是弄懂了
但就是这个数据库缓存,不是很明白
看手册里分AR缓存,和查询缓存,我看写法都一样。但不知是不是相同的;
还就是根据手册和LS的大大们说的:如果数据库缓存了生成的缓存,要自己手动写代码删除缓存,下次访问时程序才会将新数据缓存起来,是这样么?

xiangxiaodong 发表于 2011-1-29 10:33:34

最近也在看这块,学到不少东东

自然 发表于 2012-4-6 13:56:37

mark 下
页: [1]
查看完整版本: 求助:CI output cache ,数据库缓存类的用法