2009-11-11 102 views
0

我想创建一个rake任务或其他东西来清除浏览器缓存。问题是,我运行的是Flash应用程序,如果更改了数据,我经常需要重置浏览器缓存,以便删除旧的swf并可以看到新的xml数据。以编程方式重置Ruby中的浏览器缓存(或从浏览器缓存中删除选择项)?

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

感谢您的帮助!

回答

2

我看到几个可能的解决方案:

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

谢谢!我使用safari – 2009-11-11 01:22:10

0

不能重置浏览器缓存,即使你有时会不会是不够的,因为不仅可以发生缓存在服务器和/或客户端上,也可以在任何数量的节点上响应从服务器到客户端的路径。

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

您可以将其设置为nocache只要记住它每次都会

1

我不知道你是如何加载XML数据,但在过去,我已经得到了被击中的服务器围绕这一问题通过添加一个随机数到XML文件的路径:

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

基本上,闪光灯将始终认为该文件是一个不同的URL。它将无法在您的缓存中找到匹配项。

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

希望它有帮助,但。

+0

生病,这很好。谢谢! – 2009-11-11 05:07:09

0

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