CodeIgniter输出缓存如何工作?

时间:2010-07-05 16:05:01

标签: php codeigniter caching

我看了这个链接: -

http://codeigniter.com/user_guide/general/caching.html

写道: -

When a page is loaded for the first time, the cache file will be written to your system/cache folder

我们可以按$this->output->cache(60);缓存视图。但它是如何实际工作的?如果我的用户经常更新和删除记录,那么该视图会经常发生变化。它会显示修改过的数据吗?或者缓存会带回旧的陈旧数据吗? (在插入和更新之前)?如果它自动管理并从数据库中提取新数据,那么在cache函数中指定分钟的目的是什么?

提前致谢:)

2 个答案:

答案 0 :(得分:14)

codeigniter的缓存方式通常是:

发出页面请求。 Codeigniter(在很多框架被加载之前)执行当前url的哈希,如果它在缓存目录中找到该文件名,它就会服务。

获取新数据的唯一方法是手动删除文件。当codeigniter没有从它生成的哈希中找到该文件时,它会动态创建页面。

Codeigniter的实现被称为“整页”缓存,因此,它的有用性受到限制。我从Phil Sturgeon那里看到了一个部分缓存库:http://philsturgeon.co.uk/code/codeigniter-cache

老实说,对于大多数项目来说,整页缓存确实不是那么有用。事实上,我需要全页面缓存的项目我甚至不会将其留给codeigniter(我将它留给网络服务器:它的速度更快)。

我猜你正在寻找的是一种部分缓存方法;大多数人都喜欢这个。如果您使用的是单个服务器,请查看APC,如果您有多个服务器,请查看Memcached。

祝你好运。

答案 1 :(得分:7)

  

但它是如何实际运作的?

如果存在比缓存时间更年轻的缓存版本,则将输出该缓存版本。

  

它会显示修改过的数据吗?

最终是,但延迟为$ cache_time

  

如果我的用户经常不断更新和删除记录,那么该视图会经常发生变化。

减少缓存时间或根本不使用缓存