CodeIgniter输出缓存是如何工作的?

6

我阅读了这个链接:

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

文中写道:

当页面第一次加载时,缓存文件将被写入您的system/cache文件夹中

我们可以通过$this->output->cache(60);对视图进行缓存。但它实际上是如何工作的呢?如果我的用户经常更新和删除记录,结果视图会非常频繁地更改。它会显示修改后的数据吗?还是缓存会带回旧的过期数据(在插入和更新之前)?如果它自动管理并从数据库中获取新鲜数据,那么在cache函数中指定分钟数的目的是什么?

谢谢!

2个回答

14
Codeigniter的缓存一般是这样工作的:
当页面请求时,Codeigniter在很多框架被加载之前就对当前URL进行哈希,并且如果在缓存目录中找到该文件名,则直接返回该文件。
手动删除文件是获取新数据的唯一方法。当Codeigniter找不到其生成的哈希文件时,它会动态创建页面。
Codeigniter实现的是“完整页面”缓存,因此其实用性受限。我看过Phil Sturgeon的部分缓存库,你可以在此查看:http://philsturgeon.co.uk/code/codeigniter-cache 老实说,对于大多数项目而言,完整页面缓存并不是非常有用。事实上,我需要完整页面缓存的项目我甚至不会让Codeigniter来处理(我会交给Web服务器:速度更快)。
我猜你要找的是部分缓存方法;大多数人都会更喜欢这种方法。如果你使用单个服务器,请看看APC;如果你有多个服务器,请看看Memcached。
祝好运。

7
如果存在比缓存时间更年轻的缓存版本,将输出该缓存版本。
最终会显示修改后的数据,但会有$cache_time的滞后。
如果用户经常更新和删除记录,导致视图变化非常频繁,可以减少缓存时间或根本不使用缓存。

9
没有附加注释就进行贬低投票是令人讨厌的行为。 - Pete

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接