求助:CI output cache ,数据库缓存类的用法
研究CI有一段时间,也用CI做过一些站,主要是个别功能模块。没有用过cache类东西。今天突然想起,看一下ci的缓存实现方式,可是找不到具体的说法。
我看了,CI里有两个地方是接近数据缓存的实现,一个是view输出缓存,一个是数据库缓存类.
1,在view输出缓存里,有个output之类的东西,可是手册里没有系统的说明, 只说明让用户最后得到所有view输出的html.
一般缓存功能都涉及到命名,保存路径,过期时间,访问等管理功能,可是CI里没有讲到(做到)。大家都知道,cache实现,可是网站的重点之重,
也是走向一个好框架的第一步,希望CI在cache功能上下点功夫,集成强大一点的cache类。
2,数据库缓存类,CI倒是做了,可是我看不明白,它说得好笼统,不明白如何实现,请大侠们给个实现例子。 我是在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:) 在你的模型里操作数据库的相关代码 前后加上
$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() 来删除
具体的例子 手册里面有 我之前大概的翻译了下... 自己做靜態比較好.... 页面缓存我是弄懂了
但就是这个数据库缓存,不是很明白
看手册里分AR缓存,和查询缓存,我看写法都一样。但不知是不是相同的;
还就是根据手册和LS的大大们说的:如果数据库缓存了生成的缓存,要自己手动写代码删除缓存,下次访问时程序才会将新数据缓存起来,是这样么? 最近也在看这块,学到不少东东 mark 下
页:
[1]