【问题标题】:Browser Timeouts浏览器超时
【发布时间】:2025-12-25 07:30:09
【问题描述】:

浏览器是否内置了超时功能,如果有,它们是什么?

我有一个页面对最多需要 5 分钟才能运行的进程执行 AJAX 调用。有人说浏览器会在 2 分钟后超时,但不知道这是否属实。

【问题讨论】:

  • 在没有超时的情况下,我已经处理了超过 15 分钟的页面,并成功返回(长 php 脚本)。
  • @Mikecito - 我们是您一直使用同一个浏览器还是使用多个浏览器?
  • 嗯...我至少知道 IE 8 和 Windows 上的 chrome,Mac 上的 Chrome 和 Safari,但不确定哪一个的超时时间最长。对我来说,每个剧本 5 到 15 分钟不等,我不记得哪个是哪个。
  • 对于响应时间较长的请求,立即202 Accepted可能更合适:“请求已被接受处理,但处理尚未完成。[...]其目的是允许服务器接受请求[...]而不要求用户代理与服务器的连接持续到该过程完成。[...]响应应该描述请求的当前状态并指向(或嵌入) 一个状态监视器,可以为用户提供请求何时完成的估计。”来源:tools.ietf.org/html/rfc7231#section-6.3.3

标签: javascript ajax browser


【解决方案1】:

你可以在这个link看到Chrome中的默认值

int64_t g_used_idle_socket_timeout_s = 300 // 5 minutes

据我所知,在 Chrome 中,没有一种简单的方法(如 Firefox 那样)来更改超时值。

【讨论】:

  • 对于 Firefox,我使用 this answer 来更改超时时间。
  • 是的,我的意思是“像 firefox 一样简单的方法”,在 Chromium 源代码中,正如我所说,它很容易更改和编译,但不知道“简单的方法”飞行
  • 我误读了你的答案,但我会留下评论,它可能对某人有所帮助。
【解决方案2】:

这取决于浏览器。 “默认情况下,Internet Explorer 具有一分钟的 KeepAliveTimeout 值和两分钟的附加限制因素 (ServerInfoTimeout)。任何设置都可能导致 Internet Explorer 重置套接字。” - 来自 IE 支持http://support.microsoft.com/kb/813827

我认为 Firefox 的价值也差不多。

通常虽然服务器超时设置低于浏览器超时,但至少您可以控制它并将其设置得更高。

你宁愿处理超时,这样你就可以对这样的事件采取行动。 看到这个帖子:How to detect timeout on an AJAX (XmlHttpRequest) call in the browser?

【讨论】: