gpt4 book ai didi

html - 防止 Chrome 中的 iframe 缓存

转载 作者:搜寻专家 更新时间:2023-10-31 22:28:50 27 4
gpt4 key购买 nike

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

问题是每次 Chrome 启动时,它都会加载网络应用程序的缓存版本。如果您在上次启动后对 Web 应用程序进行了更改,则在您硬刷新页面之前,这些更改不会显示。

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

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

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

我还可以尝试上面没有提到的任何其他事情吗?

问题的进一步示例:

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

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

最佳答案

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

作为解决方法,我发现从 javascript 设置 iframe src 以及将随机查询参数附加到 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);

关于html - 防止 Chrome 中的 iframe 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25732519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com