关于框架(iframe)内页面响应时间的问题

caobob 2009-10-19 09:20:32
有个项目中a.aspx是父页,内有iframe调用b.aspx页面处理一个大概需要十几小时才能处理完成的工作。b.aspx处理的进度放在了appliction中。然后a.aspx实时通过ajax方法获取这个进度。当b.aspx结束工作页面加载完毕后用jQuery.ready的方法修改a.aspx中的一个开关变量以停止进度获取。
现在的问题是,如果b.aspx处理的时间很短,那么一切正常。而b.aspx时间处理一长,那么进度就会卡在99%而无法看到最后"100%处理完成"。想问下,iframe内的页面是否也有超时之类的问题,从而导致这个问题。
...全文
758 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
~青峰~ 2009-12-30
  • 打赏
  • 举报
回复
哈哈,发完了发现时10月的帖子。。。

我是外星人。路过了。。。

呵呵
~青峰~ 2009-12-30
  • 打赏
  • 举报
回复
既然A要刷就不要让B去触发A停止了,等A发现处理完了就给A页的一个Javascript全局变量打上记号,或者直接把Timer停掉。干嘛要B触发A停止啊?

var timer = setInterval("loadProcess()", 1000);

function loadProcess(){
$.getJSON("xxxxxx",function(json){
if(json.proc==100){
clearInterval(timer);
}else{
//显示进度
}
})
}
zuoming120 2009-10-19
  • 打赏
  • 举报
回复
caobob 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jaylongli 的回复:]
进度放在session  更合适

因为你放在application 中,如果有多人同时使用,你的进度会混乱

会不会是仅仅是进度显示的原因?
[/Quote]
用Session是不可以的,我一开始就试过。因为10几小时内那个页面的处理函数并没有走完。所以服务器Session并不能及时得到更新,进度无法查询。
Appliction可以做一个HashTable,就可以避免进度混乱了。后期改善中会考虑,因为项目希望进度条能套件化给全部需要的地方调用。
caobob 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 leonbingo 的回复:]
jQuery.ready,这个函数说的是要检查一个html文档的加载状态,如果可用,那么就执行,所以我觉得问题也许出在这个地方,就是浏览器那里等了很长的时间,比如你说的十几个小时,没得到响应,有可能是没有将文荡状态变为可用,所以我觉得我们换个办法,a.aspx实时通过ajax方法获取这个进度,直到进度为100%的时候,然后修改a.aspx中的一个开关变量以停止进度获取,显示完成,这样你看可好?
[/Quote]
经过一次50万条的数据测试,发现问题就是出在jQuery.ready上。因为后台程序执行结束了,因为日志文件写完已经是最后一步。起初我就是做完一条数据写一次进度。但是发现服务器开销很厉害。后来改成了完成一定数量后写一次进度。我也在想替代jQuery.ready的方法。看来jQuery.ready是比onload好,但是也有缺点的。
加油馒头 2009-10-19
  • 打赏
  • 举报
回复
进度放在session 更合适

因为你放在application 中,如果有多人同时使用,你的进度会混乱

会不会是仅仅是进度显示的原因?
leonbingo 2009-10-19
  • 打赏
  • 举报
回复
jQuery.ready,这个函数说的是要检查一个html文档的加载状态,如果可用,那么就执行,所以我觉得问题也许出在这个地方,就是浏览器那里等了很长的时间,比如你说的十几个小时,没得到响应,有可能是没有将文荡状态变为可用,所以我觉得我们换个办法,a.aspx实时通过ajax方法获取这个进度,直到进度为100%的时候,然后修改a.aspx中的一个开关变量以停止进度获取,显示完成,这样你看可好?
caobob 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bigmingming 的回复:]
时间是过长了点
[/Quote]
业务需要循环处理几百万条数据是无法变更的。困难就在这里。
caobob 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 herojams 的回复:]
当b.aspx结束工作页面加载完毕后用jQuery.ready的方法修改a.aspx中的一个开关变量以停止进度获取。
直接赋值为"100%处理完成"
[/Quote]
那么做了,短时间有效,时间长了无效。服务器端发现日志文件都写好了。就是b.aspx的jQuery.ready没有执行
bigmingming 2009-10-19
  • 打赏
  • 举报
回复
时间是过长了点
lovexilove 2009-10-19
  • 打赏
  • 举报
回复
呵呵,10几个小时真长啊
wuyq11 2009-10-19
  • 打赏
  • 举报
回复
b.aspx页面显示进度条,处理完成,显示100%完成的DIV
_see_you_again_ 2009-10-19
  • 打赏
  • 举报
回复
当b.aspx结束工作页面加载完毕后用jQuery.ready的方法修改a.aspx中的一个开关变量以停止进度获取。
直接赋值为"100%处理完成"

62,046

社区成员

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

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

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

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