首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >刷新iFrame (缓存问题)

刷新iFrame (缓存问题)
EN

Stack Overflow用户
提问于 2010-03-26 23:40:18
回答 7查看 65K关注 0票数 20

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

代码语言:javascript
运行
复制
<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。问题是两个文件的内容都在服务器端成功更新。如果我们打开,我们可以看到更新的更改,但客户端获取的是较旧的内容,没有显示更新的更改。

有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-03-26 23:42:49

在a.html和b.html中添加此代码

代码语言:javascript
运行
复制
<head>
    <meta http-Equiv="Cache-Control" Content="no-cache" />
    <meta http-Equiv="Pragma" Content="no-cache" />
    <meta http-Equiv="Expires" Content="0" />
</head>

强制不进行缓存检查

票数 27
EN

Stack Overflow用户

发布于 2010-03-26 23:44:34

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

Making sure a web page is not cached, across all browsers (我认为共识是第二个答案是最好的,而不是公认的答案)

Simone的答案已经涉及到Meta标签。

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

代码语言:javascript
运行
复制
page_1.html?time=102398405820

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

票数 12
EN

Stack Overflow用户

发布于 2012-07-03 03:11:58

尝试如下所示:

代码语言:javascript
运行
复制
<script>
    var frameElement = document.getElementById("frame-id");
    frameElement.contentWindow.location.href = frameElement.src;
</script>

这将强制重新加载iframe,即使它已由浏览器缓存

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2524502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档