如果网站处理和加载网页的时间超过10秒,Internet Explorer
将执行connection timeout
。用户可以通过将注册表中的默认值设置为更高的值来防止这种情况。
但我真的不能告诉我的任何客户这样做;所以我该如何防止这种情况发生?
我一直学会不使用buffer
并刷新它,因为这会使数据的计算速度变慢。
另一个问题是,所有的计算都是先完成并放入multidimensional array
,最后用response.write
发布。我不认为,buffer
flush
可以对此做些什么?
答案 0 :(得分:2)
我不认为缓冲区刷新可以做任何事情吗?
是的,它可以:
Internet Explorer error "connection timed out" when server does not respond:
Internet Explorer对服务器强制执行超时限制以返回数据。默认情况下,超时限制如下:Internet Explorer 5到8: 60分钟
如in this question所述,您所指的超时似乎可能由其他应用程序错误设置。
如果页面在几分钟内没有返回,许多用户会发现问题已经发生,并且他们会停止该过程。因此,您应该设计服务器进程以在大约五分钟内返回数据,以便用户不必等待很长时间。
知识库文章还指出:
您通常可以将长流程细分为更小的流程。或者,服务器可以返回状态数据以更新用户有关该过程的信息。此外,您可以创建一个具有基于消息或异步方法的长服务器进程,以便在提交作业后立即返回给用户,然后在长进程完成后通知用户。
因此,您应该将数据刷新到客户端,因此它知道服务器仍处于活动状态。
我一直学会不使用缓冲区并刷新它,因为这会使数据的计算速度变慢。
请出示此类声明的来源。当然它会使计算速度变慢,但很可能并不显着。
我喜欢知识库文章中提出的方法。让您的服务器立即返回,同时您将长时间运行的操作排入队列。然后,客户端可以轮询操作的进度,因此不会超时。