接收大量数据时防止浏览器超时

时间:2012-08-23 17:26:22

标签: html browser timeout

我有一个管理界面,我的一个客户端使用该界面,当通过Web界面启动进程时,服务器处理后端服务器上的大量记录。然后,网页使用简单的HTML(不是任何AJAX或其他JS)更新提供更新,如下所示:

Processing All Records: 
000000 to 000099: ....................................................................................................
000100 to 000199: ....................................................................................................
//... More Records Processed Here ...
009700 to 009799: ....................................................................................................
009800 to 009899: ..............................
Data processing complete: 9830 total records processed

此处理可能需要一个多小时。在我使用的浏览器(IE和Cr​​ome)中,页面继续接收更新并在处理时显示它们。 问题是,对于我的客户端(使用多个浏览器和计算机),他的屏幕在几分钟后停止显示更新,即使他等待处理完成(离开他的浏览器一夜之间打开),他从未收到“数据处理完成”通知。基本上,他的浏览器只是超时,甚至认为处理在服务器上继续并且过程完成。

HTML输出(使用经典ASP ...我知道,ugg)在处理完每条记录后用简单的Response.Write(".")完成。除了标准HTML <head> </head> <body> </body>标记之外,不会应用其他格式,并且所有Response.Writ都在正文中完成(因此浏览器不是等待身体标签以外的任何结束标签。)

我意识到我可以重写代码并使用一些花哨的JS和AJAX调用进行更新,或者转移到带有电子邮件更新的异步服务,但我想找到最简单的解决方案,不要求我更改代码许多。

所以,我的问题是,他的浏览器/网络中的哪个设置会导致浏览器超时,而我测试的所有浏览器都会继续接收数据

如果有帮助,这是输出的原始HTML:

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<LINK rel="stylesheet" type="text/css" href="\css\normal.css">
</head>
<body>
Initiating data retreival at: 8/23/2012 11:02:59 AM<br>
<hr>
Processing All Records: 
<br>000000 to 000099:....................................................................................................
<br>000100 to 000199:....................................................................................................
<br>000200 to 000299:....................................................................................................
<!-- More Lines Here -->
<br>009800 to 009899:..............................<hr>
Data import complete: 9830 total records processed<br>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

浏览器依赖于RAM和共享内存来缓存。尝试使用代码来限制宽度和高度,基于表格

<table style='table-layout:fixed'>

这将允许浏览器呈现表,而不会尝试重新计算每个新行添加的宽度

此外,基于GTK的浏览器可以帮助您实现您的目的#例如,juniper-browser,NetFront等。

答案 1 :(得分:1)

没有可靠的,明确定义的方法,因为它完全取决于浏览器,网络连接,路由器,操作系统......而不是希望你能够幸运,控制情况。< / p>

最简单的方法是重构一个脚本,对一小批项目进行处理,然后继续使用AJAX(保留偏移量)获取该脚本,直到报告它已完成为止。这比希望找到一些神奇的技术更加强大和明确,这些技术可能会在将来发生变化。