CodeIgniter数据库缓存正在缓存会话Flashdata,使其持续时间过长


CodeIgniter Database Caching is caching Session Flashdata - making it persist for too long

我正在构建一个应用程序,该应用程序使用Flashdata在某些操作后向用户显示消息,例如"已成功删除项目"等。我还使用CodeIgniter的数据库查询缓存来缓存某些查询,直到我使其无效。

编辑完一个项目后,我将Flashdata消息设置为"项目已编辑"。然后我redirect()到All Items视图,其中显示Flashdata消息但是,即使在重新加载页面时,此Flashdata消息仍然存在。让它消失的唯一方法是清空application/cache目录。

是否有任何合理的方法可以覆盖缓存机制以不缓存Flashdata?我发现了这个——http://codeigniter.com/wiki/No_Flash_Cache-但对于CI 1.7来说,这似乎是一个非常古老的解决方案。无论如何,我还是尝试了一下,但出于某种原因,CI不想覆盖私有函数_write_cache()——它会覆盖其他所有函数,不过(编辑:现在意识到(除非有人告诉我其他情况)只影响输出缓存,而不是数据库缓存)

提前感谢!

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

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