【问题标题】:CodeIgniter Database Caching is caching Session Flashdata - making it persist for too longCodeIgniter 数据库缓存正在缓存 Session Flashdata - 使其持续时间过长
【发布时间】:2012-02-14 18:47:56
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

  • 确保您没有在代码中使用$this->session->keep_flashdata('item');
  • 如果您离开页面并返回该页面,它会重新出现吗?如果不是,则可能是浏览器缓存问题。检查 Firebug/Chrome 开发工具中的 Net 选项卡,查看服务器是否正在发送 304(未更改)标头。如果是,那是你的问题,CI 没有错。

标签: php database codeigniter session caching


【解决方案1】:

你可以通过使用 cache_override 钩子来改变 codeigniter 的缓存机制。以下几行是从他们的文档中复制的

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多