如何防止Firefox和Safari缓存iframe内容?
我有一个简单的网页,有一个iframe到不同网站的页面。外部页和内部页都有HTTP响应头以防止缓存。当我单击浏览器中的“后退”按钮,外部页面正常工作,但无论如何,浏览器总是检索iframed页面的缓存。 IE工作正常,但Firefox和Safari都给我麻烦。
我的网页看起来像这样:
var变量总是变化。尽管事实上iframe的URL已经改变(因此,浏览器应该向该页面发出新的请求),浏览器只是获取缓存的内容。
我已经检查过来的HTTP请求和响应,我注意到,即使外部页面包含< iframe src =“webpage2.html?var = 222”/>,浏览器仍然会抓取webpage2.html ?var = 111。
这里是我到目前为止所尝试:
>更改具有随机var值的iframe网址
>将Expires,Cache-Control和Pragma标头添加到外部网页
>向内部网页添加Expires,Cache-Control和Pragma头
我无法做任何JavaScript技巧,因为我被同源策略阻止。
我的想法不多了。有谁知道如何阻止浏览器缓存iframed内容?
更新
我安装Fiddler2作为丹尼尔建议执行另一个测试,不幸的是,我仍然得到相同的结果。
这是我执行的测试:
>外页使用JSP中的Math.random()生成随机数。
>外部页面在网页上显示随机数。
>外部页面调用iframe,传入随机数。
>内页显示随机数。
通过此测试,我可以准确地查看哪些页面正在更新,哪些页面已缓存。
视觉测试
对于快速测试,我加载页面,导航到另一个页面,然后按“返回”。这里是结果:
原始页:
>外页:0.21300034290246206
>内页:0.21300034290246206
离开页面,然后击退:
>外页:0.4470929019483644
>内页:0.21300034290246206
这表明内部页面正在缓存,即使外部页面在URL中使用不同的GET参数调用它。由于某些原因,浏览器忽略了iframe正在请求新的URL的事实;它只是加载旧的。
提琴手测试
果然,Fiddler也证实了同样的事情。
(我加载页面。)
调用外部页面。 HTML:
0.21300034290246206
(我离开页面,然后回来。)
调用外部页面。 HTML:
0.4470929019483644
那么,从这个测试,它看起来好像Web浏览器不缓存页面,但它缓存的iframe的URL,然后对缓存的URL提出一个新的请求。但是,我仍然困惑如何解决这个问题。
有谁有任何想法如何阻止Web浏览器缓存iframe网址?