如果网站处理和加载页面的时间超过 10 秒,Internet Explorer
将做一个connection timeout
。用户可以通过将注册表中的默认值设置为更高的值来防止这种情况发生。
但我真的不能告诉我的任何客户这样做;所以我如何首先防止这种情况发生?
我一直学会不使用buffer
并刷新它,因为这会使数据的计算速度变慢。
另一个问题是,所有计算都是首先完成并放入multidimensional array
,最后发布的是response.write
。我不认为buffer
flush
对此可以做些什么吗?
我不认为缓冲区刷新对此有什么作用?
是的,它可以:
当服务器没有响应时,Internet Explorer 错误“连接超时” http://support.microsoft.com/kb/181050/en-us:
Internet Explorer 对服务器返回数据施加超时限制。默认情况下,超时限制如下: Internet Explorer 5 至 8:60分钟
看来您所指的超时可能是由不同的应用程序错误设置的,如上所述在这个问题中 https://stackoverflow.com/questions/2625650/internet-explorer-8-timeout-too-quick-on-page-posts.
如果页面在几分钟内没有返回,许多用户就会认为出现了问题,并停止了该过程。因此,您应该将服务器进程设计为在大约五分钟内返回数据,这样用户就不必等待很长时间。
知识库文章还指出:
您通常可以将长流程分解为更小的部分。或者,服务器可以返回状态数据以向用户更新有关进程的信息。此外,您还可以创建一个基于消息或异步方法的长服务器进程,以便在提交作业后立即返回给用户,然后在长进程完成后通知用户。
因此,您应该将数据刷新到客户端,以便客户端知道服务器仍然存在。
我一直学会不要使用缓冲区并刷新它,因为这会使数据的计算速度变慢。
请显示此类声明的来源。当然,这会使计算速度变慢,但很可能不会显着。
我喜欢知识库文章中建议的方法。让您的服务器立即返回,同时将长时间运行的操作排入队列。然后,客户端可以轮询操作的进度,因此不会超时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)