阻止Chrome中的iframe缓存

时间:2014-09-08 20:19:24

标签: html google-chrome caching browser-cache google-chrome-app

我有一个用于测试智能电视网络应用程序的模拟器。模拟器本身是一个Web应用程序,具有显示电视和远程的简单界面,并在iframe中加载正在测试的Web应用程序。用户从命令行启动模拟器,启动两个简单的HTTP服务器(一个用于模拟器,一个用于正在测试的Web应用程序),然后使用指向模拟器的--app命令行开关启动chrome。 / p>

问题在于Chrome每次启动时都会加载网络应用的缓存版本。如果您自上次发布以来对自己的网络应用进行了更改,那么在您对页面进行硬刷新之前,它们不会显示。

为了解决这个问题,我尝试了以下方法:

  • 添加了--disable-cache开关
  • 启动Chrome
  • 将随机查询参数附加到传递给chrome的启动网址(例如:--app=http://localhost:6001/?random={some_hash}
  • 将随机查询参数附加到iframe
  • 中指定的Web应用程序URL
然而,

这些似乎都没有。模拟器代码似乎没有被缓存,因为iframe中的src URL确实每次都会附加一个新的随机值。但是,iframe中加载的页面是旧的,并且在首次启动后始终需要刷新。

我可以尝试的其他任何我尚未涵盖的内容?

问题的进一步示例:

  • 用户首次为网络应用1 启动模拟器
      模拟器中显示的
    • Web应用1
  • 用户关闭模拟器
  • 用户启动 web app 2 的模拟器
      模拟器中显示的
    • Web应用1

在这种情况下,模拟器将启动并仍显示Web应用程序1.它将继续显示Web应用程序1,直到用户执行硬刷新(cmd + shift + r),此时Web应用程序2最终显示

1 个答案:

答案 0 :(得分:7)

听起来这可能与此处的错误有关: https://code.google.com/p/chromium/issues/detail?id=324102

作为一种解决方法,我发现从javascript设置iframe src ALONG将随机查询参数附加到URL似乎可以解决问题。只做一个或另一个不起作用。

示例:

// still loads stale page
document.getElementById('tv-screen').src = 'http://localhost:6001/'; 

// will load fresh page
document.getElementById('tv-screen').src = 'http://localhost:6001/?rand=' + Math.round(Math.random() * 10000000);