dolphin 发表于 2015-3-9 20:23:23

文档里面的缓存和缓存适配器讲的有什么区别?

刚才了解了一下缓存功能。
http://codeigniter.org.cn/user_guide/general/caching.html
这里将的缓存使用很方便,只需要在需要使用的地方调用
$this->output->cache(n);
就可以了。
我本地测试也没什么问题。

        public function index()
        {
                $this->output->cache(10);

                $this->load->view('welcome_message');
        }


这样在第一次访问的时候会在cache目录下生成一个文件。
当下次再访问这个URL的时候就直接输出cache里面的文件了。

如果页面中有一部分的内容需要每次访问的时候更新,就通过ajax来更新。

论坛里面也讨论了如果对URL进行安全判断,防止被恶意攻击。

http://codeigniter.org.cn/user_guide/drivers/caching.html
这个缓存适配器讲的和之前的有什么不同?

dolphin 发表于 2015-3-9 20:24:22

另外能不能设置缓存文件永远存在 除非手动删除?

pcjingl 发表于 2015-3-9 22:22:03

一个是页面缓存,另一个是数据缓存。

你可能会希望把网站的导航菜单从数据库中查询出来,并保存到缓存文件或缓存服务器中,这样可以很大程度上减少对数据库的访问。

而页面缓存则是把控制器输出的结果缓存到了文件中,其中包括了完整的HTML代码。比如你这时候修改了导航菜单的名称并更新了数据缓存,而页面缓存还没有到期,你看到的仍然是之前的页面。

pcjingl 发表于 2015-3-9 23:16:18

dolphin 发表于 2015-3-9 20:24
另外能不能设置缓存文件永远存在 除非手动删除?

我的印象中数据缓存可以通过把时间设置为0($this->cache->save('config', $config, 0);),使其永不过期。但如果你使用的是类似Memcached的缓存服务有可能缓存服务本身具有强制过期的机制。

而页面缓存必须指定缓存时间,如果使用 $this->output->cache(0); 这样的语句,设置缓存时间为0,则不会生成缓存文件。

还要注意一点是页面缓存的时间单位是分钟,而其他的是秒。

dolphin 发表于 2015-3-10 09:07:45

pcjingl 发表于 2015-3-9 23:16
我的印象中数据缓存可以通过把时间设置为0($this->cache->save('config', $config, 0);),使其永不过期 ...

非常感谢。明白了。这么看来对于CMS这样的内容型系统页面缓存比较有用,因为很多页面生成后基本都是固定的html了。
而对于电子商务这样的系统数据缓存比较有用,因为和数据库交互很频繁。
页: [1]
查看完整版本: 文档里面的缓存和缓存适配器讲的有什么区别?