使用动态内容进行Codeigniter HTML缓存

时间:2015-04-19 15:42:02

标签: php ajax codeigniter caching

我有一个应用程序,我使用ajax来更新评论&喜欢数。

我正在使用Codeigniter页面缓存http://www.codeigniter.com/user_guide/general/caching.html

并设置以下代码以每60分钟重新创建一次缓存

$this->output->cache(60);

问题是当有人输入新注释时,DB操作正在发生(由于Ajax调用),但由于缓存的HTML页面,新插入的注释在页面刷新后消失。如何处理缓存以及动态内容以进行更改?

2 个答案:

答案 0 :(得分:0)

缓存的主要目的是在页面加载时节省服务器资源(即服务器每次加载时都不需要获取所有动态数据)。

听起来您使用AJAX功能既提交数据又同时修改客户端的网页。当用户然后刷新页面时,这将从服务器返回内容,在这种情况下,在发表评论之前生成的原始缓存内容因此完全按照预期运行。

如果您对缓存此页面有真正的要求,可以考虑删除缓存,这会强制在每次发表评论时在下一页加载时重建它。将以下代码行放在控制器中(在接收AJAX数据的函数中)应该这样做:

$this->output->delete_cache('foo/bar');

答案 1 :(得分:0)

我找到了解决方案。

要删除缓存文件,您需要使用以下功能

$this->output->delete_cache('CONTROLLER/FUNCTION');

注意:之前或之后没有斜线。

在我的案例中,我在codeigniter中使用自定义路由。当用户键入example.com时,它将被路由到example.com/CONTROLLER/FUNCTIONNAME,并且也是默认登录页面。

所以我创建了一个新功能。请refer here