刷新 iFrame(缓存问题)

新手上路,请多包涵

我们遇到了一个奇怪的问题,我们不确定到底是什么原因造成的。让我详细说明这个问题。假设,我们有两个不同的 html 页面 a.html 和 b.html。还有一个用 index.html 编写的小脚本:

 <html>

<head>
    <script>
    function reloadFrame(iframe, src) {
        iframe.src = src;
    }
    </script>
</head>

<body>
    <form>
        <iframe id="myFrame"></iframe>
        <input type="button" value="Load a.html" onclick="reloadFrame(document.getElementById('myFrame'), 'a.html')">
        <input type="button" value="Load b.html" onclick="reloadFrame(document.getElementById('myFrame'), 'b.html')">
    </form>
</body>

</html>

服务器组件不断更新文件 a.html 和 b.html。问题是两个文件的内容都在服务器端成功更新。如果我们打开,我们可以看到更新的更改,但客户端获取的是不显示更新更改的旧内容。

任何想法?

原文由 Ramiz Uddin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

在 a.html 和 b.html 中添加

<head>
    <meta http-Equiv="Cache-Control" Content="no-cache" />
    <meta http-Equiv="Pragma" Content="no-cache" />
    <meta http-Equiv="Expires" Content="0" />
</head>

强制不进行缓存检查

原文由 Simone Margaritelli 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您可以向这些 HTML 文件添加服务器端指令,则可以发送适当的标头以防止缓存:

确保网页未在所有浏览器中缓存(我认为共识是第二个答案是最好的,而不是被接受的答案)

Simone 的回答已经处理了 Meta 标签。

一个廉价的快速技巧是添加一个随机数作为 GET 参数:

 page_1.html?time=102398405820

如果这在每次请求时都发生变化(例如使用当前时间),那么每次都会强制重新加载。

原文由 Pekka 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏