【问题标题】:Concurrent Ajax requests in ChromeChrome 中的并发 Ajax 请求
【发布时间】:2019-07-27 16:01:55
【问题描述】:

我已阅读 Chrome 浏览器对特定域的并发 ajax 请求限制为 6。早些时候我已经测试并确认了这一点。但是现在我看到甚至有 100 个请求同时从 chrome 浏览器发送到服务器,并且所有请求同时处于活动状态。 如果有变化,有人可以指导。我使用 chrome 72。我可以向您保证,调用确实已经到达服务器,因为我可以看到与调用对应的所需数据库条目。 但之前这些调用将处于等待模式,直到之前的调用完成。

更新 一些额外的观察可能相关也可能不相关。我用 2 台服务器对此进行了测试 - 1 台有 IIS 10 并且没有看到这个限制。 另一个有 IIS 8,我可以看到一次只有 6 个被发送到服务器。

【问题讨论】:

  • 我确定这些不是并发的,它们可能会相隔几毫秒
  • @Mr.Alien 几毫秒没问题。但这不是问题。如果浏览器只允许有限的并发连接,那么在之前的某个调用返回之前,该调用不应访问服务器。我很确定几周前我看到过这种行为,但现在看不到。
  • 您能分享一下您是如何进行测试的吗?
  • 服务器是否支持HTTP2?如果是这样,您看到所有请求都在一个连接中处理,请阅读this
  • 查看网络选项卡中的协议列,它应该是h2http1.1,如果该列不存在,请右键单击列标题以启用它。

标签: javascript ajax google-chrome security


【解决方案1】:

您可以通过运行测试获得每个浏览器的最大同时连接数 (以前在browserscope之类的服务上,但现在该服务已死,因此您可以手动进行)

结果基于您的版本和配置。

这是我使用 Google Chrome 版本 72.0.3626.121(官方构建)(64 位)的网络测试结果:

16. data: URLs = yes
15. Link Prefetch = no
14. Cache Resource Redirects = yes
13. Cache Redirects = yes
12. Cache Expires = yes
11. || CSS + Inline Script = no
10. || CSS = yes
9. Async Scripts = no
8. || Script Iframe = yes
7. || Script Image = yes
6. || Script Stylesheet = yes
5. || Script Script = yes
4. Max Connections = 24
3. Connections per Hostname = 6
2. Check Latency = 251
1. PerfTiming = yes

因此对于 Chrome 72,每个主机名最多有 6 个连接,不同主机名最多有 24 个连接。

希望对你有帮助。

【讨论】:

  • 如果您认为这篇文章可以改进,请考虑添加评论。
  • 我已经经历了这一切但这并没有回答我的问题。
  • 网址已损坏 :)
【解决方案2】:

对于 HTTP/1.1,此行为未更改。

如果启用WaterFall,您可以获得更清晰的图片。如果您看到瀑布,在某个时间点只有 6 个请求会被触发(发送到服务器),其余的都将处于挂起模式。

注意,网络标签中出现状态为“待处理”的请求并不意味着请求已发送到服务器。

以下是Version 74.0.3726.0的截图

【讨论】:

  • 我正在使用 h2 (Http/2.0) 协议,但仍然只能一次发送 6 个 ajax 请求。知道为什么吗?
猜你喜欢
  • 1970-01-01
  • 2011-06-24
  • 2018-09-07
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2013-09-14
相关资源
最近更新 更多