如何触发清除iframe父页面的缓存?

时间:2014-04-08 05:40:46

标签: javascript html caching iframe embedding

我已经浏览了关于iframe缓存的各种问题,但还没有得到我想要的答案。

我们允许使用iframe嵌入代码嵌入在我们的网络应用中上传的内容,如下所示:

<iframe src="http://emdevcc5.mediapartner.com/embed.aspx?e=UkvpYFBUMZc=" style="height: 400px; width: 400px;"     marginwidth="0" marginheight="0" frameborder="0" scrolling="auto" id="UkvpYFBUMZc="></iframe>

此代码可以嵌入到第三方网页中的任何位置,例如博客,新闻文章等。我正面临着这个问题所描述的奇怪问题。 (此问题中描述的问题目前并不重要):

YUI dialog/panel not rendering correctly in IE iframe

每当我从IE开发工具清除浏览器缓存时,问题就会消失。我认为该操作会清除父页面的缓存,我认为我不能从我的iframe页面的代码中触发。

所以我正在寻找解决这个问题的方法,即清除父页面的缓存。由于每次访问时都不会生成嵌入代码 - 它只生成一次然后多次访问 - 我无法在src属性的末尾添加一些随机时间戳。至少我认为如果不在嵌入代码中使用javascript我就能做到。

我可以控制iframe内容,并且在页面头部添加了no-cache标记。由于这些标签,在调试时,我看到该请求确实得到了服务器的服务。仅在从IE开发工具清除父页面的缓存时,问题仍然存在。所以我不确定如何触发清除父页面的缓存

我有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您可以控制网页。因此,设置适当的标头以防止缓存。

以下是PHP中的示例。

<?
header('Expires: Sun, 01 Jan 2014 00:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');
?>

您可以将其放在页面顶部。

答案 1 :(得分:2)

这取决于您是否掌控了内容。您可以放置​​2个标签(理想情况下位于页面的顶部),告诉浏览器不要使用缓存版本。我用

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

大多数网站会说这可能会或可能不会奏效,但我在任何浏览器上都没有遇到过此问题。