页面嵌套 Iframe 产生缓存导致页面数据不刷新问题

最近遇到个比较古怪的问题:当页面嵌套多个 Iframe 时会出现 Iframe 里包含的页面无法看到最新的页面信息。

初步解决方案,在 Iframe 指向的页面地址后缀添加一个随机数或者时间戳。这样能确保每次在加载页面时,让浏览器知道它是最新的页面。说白了就是欺骗下浏览器,躲过缓存的灾难。(这是从 Stack Overflow 和 CSDN 上找到一个看似可行,能彻底治根的办法。 )

Sample Code:

通过 JS 产生随机数,把数据数当成参数传给页面地址

<script type="text/javascript">
var randomnumber=Math.floor(Math.random()*100000);
document.write(‘<iframe src="xxxx.aspx?_=‘+randomnumber+‘"></iframe>‘);
</script>

通过时间戳的办法

<script>
var ts=new Date().getTime()
document.write(‘<iframe src="xxxx.asp?_=‘+ts+‘"></iframe>‘);
document.write(‘<iframe src="xxxxxx.asp?_=‘+ts+‘"></iframe>‘);
document.write(‘<iframe src="xxxxxxxx.asp?_=‘+ts+‘"></iframe>‘);
</script>


但这样现象依旧,实在快崩溃了。我依旧沿着这个方向去找,毕竟 Iframe 产生缓存是根源。既然浏览器端用这种方式依旧无法解决。只好从服务器端下手了,突然灵光一现,IIS 貌似有个可以自动保留缓存的机制。

看来距离彻底治根的办法不远了。开始进入测试环境的 VM 机,把 IIS 给开起来,一开始有个配置项就吸引我了。 “HTTP 响应标头”, 因为最最最早在处理这个办法的时候就是利用 JS 来强制清除浏览器缓存(可以参考如下,虽然这个办法没根治,但应该有需要这个方法的码友)。

<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT= "no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT= "Wed, 26 Feb 1997 08:21:57 GMT"> 

开始配置 HTPP 响应标头。

1. 进入 IIS ,找到传说中的 “ HTTP 响应标头”,进入 HTTP 响应标头

2.添加自定义 HTTP 响应标头

问题终于得到解决..

时间: 2024-10-13 01:58:39

页面嵌套 Iframe 产生缓存导致页面数据不刷新问题的相关文章

页面嵌套iframe时,怎样让iframe高度根据自身内容高度自适应

总体思路是这样的,因为iframe里页面的内容是动态加载的,而且电脑屏幕宽度发生变化时,也得相应的去改变iframe标签的高度(如果高度确定就不用这么麻烦了): 首先,我们在父页面中定义一个方法,用来改变iframe标签的高度:在iframe中的页面中,当内容加载号之后去调用父页面汇总的这个方法(因为要根据内容自适应高度): 然后再处理,当屏幕发生改变时,在子页面汇总调用父页面汇总的这个方法: 父页面代码: <!DOCTYPE html> <html lang="en"

页面嵌套iframe后,点击里面的链接,然后父窗口跳转(子窗口控制父窗口的链接跳转)

做app的时候遇到一个问题,一个页面,然后里面嵌套了一个另一个页面,想实现点击里面的链接,然后外面进行跳转,不然的话,里面的页面永远出不来, 后面想了个办法,app的页面都是打开打开,不关闭的,然后由上一个页面用postmessage进行监听,然后子窗口发送信息给父窗口,父窗口接到信息后进行 页面跳转,Android可以,然而ios却不行,坑了:只能想另外一种办法, app打开页面不是都不会关闭的嘛,然后让这个top页面去轮询读取cookie,目标页面 判断请求头部,是否为移动端访问(因为目标页

jQuery 获取jsp页面中用iframe引入的jsp页面中的值

<iframe scrolling="no" src="<c:url value='/unitBaseperson/view.do?para=9&op=send&type=xls'/>" id="main" frameborder="0" width="400"></iframe> <!--在a.jsp页面中--> 假如我的jsp页面包含这样一

子页面是iframe框架中 子页面改变父页面的值

<script type="text/javascript"> window.onload = function () { parent.document.getElementById('SupName').text = $("#txtName").val(); } </script>

如何将一个HTML页面嵌套在另一个页面中

这个在做网页中常要用到,有些通用的内容可集中放在一个页面文件中,其它要用到这些内容的页面只需要包含(引用)这个通用文件即可.这样便于维护,如果有很多网页,当通用内容需要修改时,只改一个文件就可以了,不需要每个文件单独修改. 最典型的应用比如页脚的版权信息等内容可以放在一个叫做footer.html文件里, 然后其他页面文件在页面内容的最后包含这个文件就可以了,具体例子下面有. 要html文件嵌套,最简单的办法是使用SSI(Server Side Include)技术,也就是在服务器端两个文件就被

iframe嵌入的子页面如何刷新父窗口

iframe中刷新父页面方法及一些按钮刷新代码集合[原创+转]2009-07-23 11:12a页面里iframe了个b页面,我想实现在b页面里一个按钮,一按就刷新a页面,也就是父页面,不是只刷新iframe里面的b页面 哦~ 请问b页面里的<input type="button" class="btn" value=" 返 回 " onclick="history.back();">那个onclick 要怎么写呢

解决iframe缓存机制导致页面不清除缓存不刷新页面的bug

在使用iframe时,已有页面嵌套了一个iframe页面,当这个页面提交后再次跳转到本页面时,原本iframe内的页面应该刷新数据的,结果未刷新,需要清除缓存后才刷新. 解决方案: var fresh_link=new Date().getTime();//获取当前时间戳,因为该时间戳唯一,将其加到跳转的iframe嵌套页面那,以防止iframe子页面访问过后遗留的缓存 window.open("link.html?+'fresh_link'", "_self");

父页面操作嵌套iframe子页面的HTML标签元素

一个页面A.html使用iframe嵌套一个页面B.html,在A页面写js操作B页面HTML元素,首先要获取到B页面document对象,才能对嵌套页面进行操作 请看一个实例,在A页面写js操作B页面div的内容: A.html代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="

通过Iframe在A网站页面内嵌入空白页面的方式,跨域获取B网站的数据返回给A网站!

以下代码只是为演示该方法具体是如何操作的,实际的意义并不大. 其实这个方法还可以解决很多方面的跨域操作,以下两点为我工作中遇到的情况! 比如A系统中打开B系统页面的时候,获取B系统页面高度,A系统中可以动态设置窗口的高度 还有A系统中打开B系统页面的时候,B系统页面进行一系列操作,操作成功后需关闭A系统窗口,就可以在操作成功后再在B系统中嵌入A系统的blank.html页面,blank.html页面打开的时候,动态关闭A系统的窗口! 下面为大家讲下是如何实现该方法的 1.在A系统下添加名称为bl