2012-02-14 70 views
1

我正在构建一个应用程序,该应用程序使用Flashdata在某些操作后向用户显示消息 - 例如, “项目成功删除”等。我也使用CodeIgniter的数据库查询缓存来缓存某些查询,直到我使它们无效。CodeIgniter数据库缓存缓存会话Flashdata - 使其持续太久

编辑一个项目后,我设置一个Flashdata消息来说“编辑项目”。然后我将redirect()添加到所有项目视图 - 显示Flashdata消息。 但是,即使当我重新加载页面时,此Flashdata消息仍然存在。让它消失的唯一方法是清空application/cache目录。

是否有任何明智的方式覆盖缓存机制不缓存Flashdata?我发现这个 - http://codeigniter.com/wiki/No_Flash_Cache - 但它似乎是CI 1.7的一个非常古老的解决方案。无论如何,我仍然坚持下去,但出于某种原因,CI不想重写私有函数_write_cache() - 它会覆盖其他所有内容,虽然... (编辑:现在意识到,除非有人告诉我,否则)只影响输出缓存 - 不是数据库缓存)

在此先感谢!

+1

确保您没有在代码中使用'$ this-> session-> keep_flashdata('item');''。 – afarazit 2012-02-18 22:15:00

+0

我已确认我没有。 ( – Jack 2012-02-20 11:22:55

+0

)如果您离开页面并返回到页面,它会重新出现吗?如果不是,它可能是浏览器缓存问题。检查Firebug/Chrome开发工具中的Net选项卡,并查看服务器是否正在发送304(不变)标题,如果是,那么这就是你的问题,并且CI没有错。 – Brendan 2012-02-24 16:44:17

回答

1

您可以使用cache_override钩子来更改codeigniter的缓存机制。以下行已经从他们的文件复制

cache_override:使您能够调用自己的函数,而不是在输出级的 _display_cache()函数。这允许你使用你自己的缓存显示机制。