Frameset frame 布局 IE7/8/9 内存泄露

gavinluo 2012-12-08 10:26:48
这种布局存在内存泄露,站点使用一会内存就涨上去了,然后整个响应很慢,客户端是Xp IE7/IE8 ,我的页面布局是这样的:

FrameMain.aspx页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<TITLE></TITLE>
<META http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<frameset rows="46,*" framespacing="0" frameborder="no" border="0" noResize scrolling="no">
<frame name="banner" src="WebForm_logo.aspx" noResize scrolling="no"/>
<frameset id="frame" cols="7,156,7,*,7" framespacing="0" frameborder="no" border="0" name="frame" noResize scrolling="no">
<frame name="left" id="left" noresize src="leftframe.aspx" scrolling="no">
<frame name="Menu" id="Menu" noresize src="Menu.aspx">
<frame name="border" id="border" scrolling="no" noresize src="middle.aspx">
<frame name="main" id="main" src="<%=MainUrl %>">
<frame name="right" id="right" scrolling="no" noresize src="rightframe.aspx">
</frameset>
</frameset>
</head>
<body>

</body>
</html>


我在Menu.aspx 中用 <a target='main' href='导航内容页面'> 来控制 main frame显示。

但是我发现长时间使用,会引起内存泄露,我参考网上尝试了一些方法 比如我在Menu.aspx页面中调用下面这个方法来清空Frame。

function clearFrame(){
var frame = window.parent.document.getElementById("main");
frame.src = 'about:blank';
frame.contentWindow.document.write('');//清空frame的内容
frame.contentWindow.document.clear();
frame.contentWindow.close();//避免frame内存泄漏
frame.parentNode.removeChild(frame);
CollectGarbage();
var newIfm = window.parent.document.createElement('frame');
newIfm.id = 'main';
newIfm.name = 'main';
var c = window.parent.document.getElementById("right");
c.insertBefore(newIfm);
}

我清空这个Frame,再从新创建一个。但有两个问题
1.内存没有减下去
2.再次清理的时候window.parent.document.getElementById("main")已经获取不到这个新添加进去的frame。

请高手来协助~~
...全文
320 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员一灯 2013-03-15
  • 打赏
  • 举报
回复
iamnewsea 2013-03-15
  • 打赏
  • 举报
回复
我也遇到了同样的问题。目前无解
manbufenglin 2013-03-15
  • 打赏
  • 举报
回复
<frame >...</frame> 框架看起来是没问题的。 也可能是其它问题,这个需要逐个排查下。
我是老姚 2013-03-15
  • 打赏
  • 举报
回复
优化你的JS吧,应该不是框架的问题。
gavinluo 2012-12-08
  • 打赏
  • 举报
回复
引用 2 楼 yyl8781697 的回复:
那么多iframe啊 试试把有些页面封装到用户控件里面啊
thanks ,yyl, 这是frame,其实最主要的只有两个,一个导航frame,一个内容显示frame,
gavinluo 2012-12-08
  • 打赏
  • 举报
回复
引用 1 楼 lzp4881 的回复:
用母版页来代替框架。
thanks,lzp, 目前的项目已经做成这个框架了,如果用模板页的话,工作量大,而且还有长时间的测试周期。我想尽快这两天这个问题处理掉。
yyl8781697 2012-12-08
  • 打赏
  • 举报
回复
那么多iframe啊 试试把有些页面封装到用户控件里面啊
lzp4881 2012-12-08
  • 打赏
  • 举报
回复
用母版页来代替框架。
gavinluo 2012-12-08
  • 打赏
  • 举报
回复
引用 5 楼 rayyu1989 的回复:
没听说过框架页还能引起这个 还有 浏览器的内存释放 和你网页里的操作一点关系都没有 不存在什么直接接口 你看猥琐的csdn列表页也是框架页 ,应该是你页面里有什么其他原因造成的
哎,我的页面的javascript操作比较多,交互多,的确占用了不少内存,只可惜IE 在这个框架下有内存泄露~ 但Chrome 没有~~
rayyu1989 2012-12-08
  • 打赏
  • 举报
回复
没听说过框架页还能引起这个 还有 浏览器的内存释放 和你网页里的操作一点关系都没有 不存在什么直接接口 你看猥琐的csdn列表页也是框架页 ,应该是你页面里有什么其他原因造成的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧