在服务器回答请求之前,浏览器需要等待多长时间才能显示错误?这次可以无限吗?
在服务器回答请求之前,浏览器需要等待多长时间才能显示错误?这次可以无限吗?
Answers:
如果您使用的是jQuery $ .ajax调用,则可以设置timeout属性以控制请求以超时状态返回之前的时间。超时设置为毫秒,因此只需将其设置为很高的值即可。您也可以将其设置为0(表示“无限”),但我认为您应该设置一个较高的值。
注意:“无限制”实际上是默认设置,但大多数浏览器都有默认超时值。
当由于超时而返回ajax调用时,它将返回错误状态“超时”,您可以根据需要使用单独的情况进行处理。
因此,如果您想将超时设置为3秒,并处理超时,这里是一个示例:
$.ajax({
url: "/your_ajax_method/",
type: "GET",
dataType: "json",
timeout: 3000, //Set your timeout value in milliseconds or 0 for unlimited
success: function(response) { alert(response); },
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
alert("Call has timed out"); //Handle the timeout
} else {
alert("Another error was returned"); //Handle other error type
}
}
});
timeout
值以0
将AJAX超时设置为无限期(无限读取)。
是的,没有。是的,服务器可以执行此操作或将其配置为执行此操作,否则浏览器(我不知道版本/发行商的详细信息)可能未启用超时。
尽管有两种解决方案可以通过HTTP实现/模拟:
您能否进一步解释一下您要实现的目标-您在服务器上运行的时间是否很长,是否只想更改本地计算机上的设置,还是正在设法对其进行大量管理?用户?
浏览器将等待多长时间取决于多种因素,例如超时发生的位置-是在TCP级别,服务器还是本地浏览器?
如果您的服务器上有一个运行时间较长的进程,而您想在此后更新网页,则典型的处理方法是异步运行该较长的进程,并在完成后通知客户端,例如,通过ajax调用轮询服务器,或使用HTTP 1.1并向客户端提供通知流。
在这两种情况下,仍然有可能关闭连接,因此客户端仍然需要重新打开连接的能力。
我发现,在正常(HTML页面)请求的情况下,浏览器在cca之后会超时。30秒 这很重要,因为其他参与者很可能会跟随它:代理,路由器(路由器在此游戏中玩吗?我不确定)。我正在使用4秒钟的服务器端延迟(如果没有要发送给客户端的时间),并且我的AJAX客户端立即执行另一个HTTP请求(我在本地网络上,没有互联网延迟)。4秒的时间足够长,不会使频繁轮询的服务器和网络超负荷工作,并且对于某种情况来说足够短,因为某种原因,一个轮询从客户端无法检测和处理的行中掉了出来。
另外,彗星(长HTTP请求)还存在其他问题:浏览器对同时HTTP请求数量的限制,客户端事件的处理(必须立即发送到服务器),服务器/网络故障检测和恢复,多用户处理等等