如何防止 Firefox 和 Safari 缓存 iframe 内容?
我有一个简单的网页与一个 iframe 到一个不同的网站上的网页。外部页面和内部页面都有 HTTP 响应头以防止缓存。当我点击浏览器中的“后退”按钮时,外部页面正常工作,但无论如何,浏览器总是检索 iframed 页面的缓存。IE 工作的很好,但是 Firefox 和 Safari 给我带来了麻烦。
我的网页是这样的:
<html>
<head><!-- stuff --></head>
<body>
<!-- stuff -->
<iframe src="webpage2.html?var=xxx" />
<!-- stuff -->
</body>
</html>
var
变量总是变化的。虽然 iframe 的 URL 已经更改(因此,浏览器应该对该页面发出新的请求) ,但是浏览器只获取缓存的内容。
我来回检查了 HTTP 请求和响应,发现即使外部页面包含 <iframe src="webpage2.html?var=222" />
,浏览器仍然会获取 webpage2.html?var=111
。
以下是我目前为止的尝试:
我无法使用任何 JavaScript 技巧,因为我被同源策略阻塞了。
我想不出办法了。有人知道怎么阻止浏览器缓存 ifraed 内容吗?
我按照 Daniel 的建议安装了 Fiddler2来执行另一个测试,不幸的是,我仍然得到相同的结果。
这是我做的测试:
Math.random()
生成随机数。通过这个测试,我能够准确地看到哪些页面正在更新,哪些页面被缓存。
为了进行快速测试,我加载这个页面,导航到另一个页面,然后按“返回”:
原页:
离开页面,然后反击:
这表明正在缓存内部页面,即使外部页面使用 URL 中的另一个 GET 参数调用它。由于某种原因,浏览器忽略了 iframe 正在请求新 URL 的事实; 它只是加载旧 URL。
果然,小提琴手证实了同样的事情。
(我加载页面。)
HTML:
0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />
Http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206被称为。
(我从页面导航离开,然后回击。)
HTML:
0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />
Http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206被称为。
从这个测试来看,网页浏览器似乎没有缓存页面,但是它缓存了 iframe 的 URL,然后对缓存的 URL 发出一个新的请求。然而,我仍然不知道如何解决这个问题。
有人知道如何阻止浏览器缓存 iframe URL 吗?