Safari缓存页面过多,如何使用rails添加expires标头

时间:2010-03-04 21:21:33

标签: ruby-on-rails apache caching

我正在页面缓存我的大多数页面并使用动态js文件来注入用户特定的内容。

所以在我的头文件中我有这样的东西:

<%= javascript_include_tag '/dynamic_header/current' %>

这样做是执行dynamic_header控制器show.js.erb视图,该视图将与页面一起返回并处理动态内容的注入。

一切顺利,直到我在野生动物园测试。 (Firefox工作正常)

似乎safari缓存了这个文件,并且在更改时没有注意到,这是每次有新的Flash消息或用户登录或注销时。

我的控制器中有一种简单的方法可以将expires头添加到此文件中吗?或者人们对如何使safari通知缓存文件已经改变有任何其他建议。

感谢。

2 个答案:

答案 0 :(得分:2)

通常,静态文件的修改日期会附加到它们的末尾以修复缓存问题。由于您的文件是动态的,因此您应该将当前时间添加到路径的末尾。

javascript_include_tag不支持此功能,因此您需要手动编写脚本include标记,如下所示:

<script type="text/javascript" src="/dynamic_header/current?t=<%=Time.now.to_i%>"></script>
祝你好运!

答案 1 :(得分:0)

也许你可以添加这个标题:

Cache-Control: no-cache

执行此操作的最佳方法可能是挂钩rack