Symfony缓存破坏了我的flash消息

时间:2009-11-20 07:58:37

标签: caching symfony1 filter

alt text

Symfony项目中的Flash消息会在执行操作后向网站用户提供反馈。它们通常仅在触发操作后显示一页加载。

不幸的是,当缓存打开时,我的邮件无法显示,只返回页面的缓存版本。

在一个实例中,缓存了带有消息的页面版本,这意味着该消息已显示给所有人。

是否可以让缓存知道Flash消息?

2 个答案:

答案 0 :(得分:1)

有两个选项,benlumley提到的那个:

  1. 关闭with_layout,使布局不是缓存文件的一部分。这不会阻止您的问题,即您的Flash渲染是在操作模板中。
  2. 每当您设置并显示闪存时,清除缓存的选定部分(记得在显示缓存后清除它,否则您将遇到问题,闪存再次显示给其他用户。或者您可以选择在显示flash的页面上以编程方式禁用缓存一次(请参阅“Configuring the Cache Dynamically上的symfony文档”。在我看来,最后一个选项非常狡猾,应该作为最后的手段使用,因为例如重定向可以拧紧一切都好了。
  3. 无论您如何操作,都没有最佳解决方案可以让您的Flash消息神奇地绕过缓存。

答案 1 :(得分:0)

没有自动的方法让symfony应对此问题。

最好/最常见的解决方案是为所有缓存操作禁用with_layout,或者仅禁用必须显示flash消息的这些特定操作。这通常可以解决问题,因为大多数人倾向于从布局而不是缓存模板中输出Flash消息。