2

我有一个由我的一个客户使用的管理界面,当通过 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 和 Crome)中,页面继续接收更新并在处理它们时显示它们。 问题是,对于我的客户(使用多个浏览器和计算机),他的屏幕在几分钟后停止显示更新,即使他等到处理应该完成(让他的浏览器在一夜之间打开),他永远不会收到“数据处理完成”通知。基本上,他的浏览器只是超时,即使处理在服务器上继续并且该过程确实完成。

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

我意识到我可以重写代码并使用一些花哨的 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>
4

2 回答 2

1

没有可靠的、明确定义的方法来做到这一点,因为这完全取决于浏览器、网络连接、路由器、操作系统……与其希望你幸运,不如控制情况。

最简单的方法是重构一个处理一小批项目的脚本,然后继续使用 AJAX 获取该脚本(保持偏移),直到它报告它已完成。这比希望找到一些魔法技术更强大和定义明确,据你所知,未来可能会改变。

于 2012-08-23T17:40:48.963 回答
0

浏览器在缓存方面依赖于 RAM 和共享内存。尝试你的代码限制宽度和高度,基于表格

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

这将允许浏览器在不尝试重新计算每个新行添加的宽度的情况下呈现表格

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

于 2012-08-23T17:40:34.407 回答