以编程方式重置Ruby中的浏览器缓存(或从浏览器缓存中删除选择项)?

时间:2009-11-11 00:20:25

标签: ruby browser-cache

我想创建一个rake任务或其他东西来清除浏览器缓存。问题是,我正在运行Flash应用程序,如果我更改数据,我通常需要重置浏览器缓存,以便删除旧的swf,并可以看到新的xml数据。

如何使用ruby重置浏览器缓存?或者更确切地说,我如何才能从浏览器缓存中删除选择项?

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

我看到了一些可能的解决方案:

  1. 编写一些shell脚本,将临时文件从磁盘中删除到缓存中(您使用的浏览器是什么?)。如果浏览器将它们缓存在内存中,我不确定删除磁盘上的文件是否有效。
  2. 使用和HTTP标头(No-Cache)来避免在浏览器中缓存Adobe has documentation on No-Cache。您只能在开发模式下设置此标头,以便在生产中缓存swf。
  3. 根据您的浏览器,强制页面和缓存刷新(例如Firefox中的Crtl-F5)

答案 1 :(得分:1)

我不确定你是如何加载xml数据的,但在过去,我通过在xml文件的路径中附加一个随机数来解决这个问题:

xml.load("data.xml?"+Math.random());

基本上,Flash总是认为该文件是不同的URL。它将无法在您的缓存中找到匹配项。

同样,我不确定你是如何加载XML数据的,所以我不确定这是否适用于你的情况。

希望它有所帮助。

答案 2 :(得分:0)

您无法重置浏览器缓存,即使您有时也不能重置浏览器缓存,因为缓存不仅可以在服务器和/或客户端上发生,而且还可以在您的响应从服务器进行的任何数量的节点上发生给你的客户。

您可以使用的唯一工具是缓存标头。

您可以将它们设置为NoCache,只要记住它每次都会点击服务器

答案 3 :(得分:0)

由于您正在使用Safari,here's an article描述了如何使用AppleScript清除缓存。但您可以跳过AppleScript部分并直接在rake任务中删除文件。唯一的问题可能是你必须重新启动浏览器才能生效,但这可以通过对进程的kill和“open /Applications/Safari.app”来完成(我假设你正在使用Mac;在Windows中它就像启动“c:\ program files \ Safari ...”)。