在ajax请求之后,浏览器将等待多长时间?

在ajax请求之后,浏览器将等待多长时间?,ajax,request,connection-timeout,Ajax,Request,Connection Timeout,在服务器响应请求之前,浏览器可以等待多长时间才能显示错误?这段时间是否可以不受限制?您能否进一步解释一下您想要实现的目标?您是否在服务器上有一个长时间运行的进程,您是否只想在本地计算机上更改设置,还是想为大量用户管理它 浏览器将等待多长时间取决于许多因素,例如超时发生的位置-是在TCP级别、服务器还是本地浏览器 如果您在服务器上有一个长时间运行的进程,并且您希望在之后更新网页,处理该进程的典型方法是异步运行长时间进程,并在完成时通知客户端,例如,使用ajax调用轮询服务器,或使用HTTP 1.1

在服务器响应请求之前,浏览器可以等待多长时间才能显示错误?这段时间是否可以不受限制?

您能否进一步解释一下您想要实现的目标?您是否在服务器上有一个长时间运行的进程,您是否只想在本地计算机上更改设置,还是想为大量用户管理它

浏览器将等待多长时间取决于许多因素,例如超时发生的位置-是在TCP级别、服务器还是本地浏览器

如果您在服务器上有一个长时间运行的进程,并且您希望在之后更新网页,处理该进程的典型方法是异步运行长时间进程,并在完成时通知客户端,例如,使用ajax调用轮询服务器,或使用HTTP 1.1并向客户端提供通知流


在这两种情况下,仍然可以关闭连接,因此客户端仍需要重新打开连接。

是和否。是服务器可以这样做,或者配置为这样做,否浏览器(我不知道版本/分发服务器的具体信息)可能已启用超时

不过,有两种解决方案可以通过HTTP实现/模拟这一点:

  • 如果这是一个简单的长时间运行的脚本,并且您正在等待结果,那么这不是一个好办法,您应该按照前面的海报中提到的那样做,并使用异步处理和服务器轮询结果,这将是一个更可靠的fire解决方案。例如:来自图像处理器服务器端的缩略图脚本:用户上载图像,服务器立即返回200和“作业ID”。然后,客户端(javascript^^)可以使用JobID请求作业状态/结果
  • 如果您的目标是在浏览器和服务器之间建立实时连接(单向连接,一旦浏览器发出请求,在不使用新请求(ajax^^^)的情况下就无法发送进一步的信息),则这称为长轮询/反向ajax,可用于通过http进行实时通信。有几种技术并行使用2个长轮询请求,这样一旦其中一个超时,第二个请求将变为活动请求,第一个请求将尝试重新连接

我发现,在正常(HTML页面)请求的情况下,浏览器在cca之后运行到超时。30秒。这很重要,因为其他参与者可能会遵循它:代理,路由器(路由器在这个游戏中玩吗?我不确定)。我使用了4秒长的服务器端延迟(如果没有任何东西发送到客户端),我的AJAX客户端立即执行另一个HTTP请求(我在本地网络上,没有互联网延迟)。4秒的时间足够长,以避免服务器和网络因频繁的轮询而过载,对于客户端无法检测和处理的行中某个轮询丢失的情况,4秒的时间足够短


此外,comet(长HTTP请求)还有其他问题:浏览器对同时HTTP请求数量的限制、客户端事件的处理(必须立即发送到服务器)、服务器/网络故障检测和恢复,多用户处理等。

如果使用jQuery$.ajax调用,则可以设置timeout属性以控制请求返回超时状态之前的时间量。超时是以毫秒为单位设置的,所以只需将其设置为一个非常高的值。您也可以将“unlimited”设置为0,但我认为您应该设置一个高值

注意:不受限制,但大多数浏览器都有默认超时,将被命中

当ajax调用由于超时而返回时,它将返回一个错误状态“timeout”,如果需要,您可以使用单独的案例来处理它

因此,如果您想设置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
        }
    }
});​

不确定您正在使用什么,但可以延长超时时间。无限,我不知道。虽然我建议不要无限时间。如果需要,您可以随时将其设置为90秒或稍长一点。如果时间超过30秒,可能有更好更快的方法来做某事。+1-我对此也很好奇。我怀疑你需要担心客户会对你不忠。你无法控制这一切。谷歌搜索发现了这一点。它基本上是说服务器或浏览器都可能超时。因此,我会选择所有浏览器的默认值都不会超过的内容。调试时,我有一次在ajax调用后出去吃午饭,回到浏览器前,仍然在等待回复。我在调试器上单击go,浏览器接收到响应。但我认为这并不重要,因为我正在调试我认为他正在尝试反向ajax…可能重复“基于ajax的在线聊天室”:将
timeout
value设置为
0
将ajax超时设置为无限期(读取无限)。@UmaShankar我正在处理与您相同的问题,你找到解决办法了吗。