You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于HTTP1.1与HTTP2请求发送、TCP连接复用及并发限制的疑问

HTTP/1.1 连接新建&复用核心规则

首先明确:HTTP/1.1 开启 Connection: Keep-Alive 的前提下,浏览器对同一个源站的请求逻辑是:

  • 优先复用当前处于空闲状态的持久连接,不会随意新建连接
  • 仅当没有空闲连接、且当前对该源站的活跃连接数未达到浏览器限制(Chrome为6)时,才会新建TCP连接
  • 活跃连接数达到上限后,新请求会进入浏览器的请求队列排队,直到有连接空闲后复用该连接发送请求

静态script标签请求场景

你给出的7个同域静态script标签,在现代浏览器下会被预加载扫描器提前识别,并行发起请求:

  • 浏览器会最多新建6个到foo源站的TCP连接,前6个脚本请求各占用一个连接并行传输
  • 第7个请求会进入排队队列,直到前6个请求中任意一个完成、对应连接空闲后,复用该空闲连接发送,不会再新建第7个TCP连接
  • 如果没有预加载逻辑、脚本是按顺序串行加载(前一个加载执行完成后才发起下一个的请求),则所有7个请求都会复用同一个TCP连接,全程不会新建额外连接

JS并行API调用场景

规则和静态资源请求完全一致,和请求发起方式无关,仅和请求所属源站有关:

  • 如果7个API调用是同时并行发起的,浏览器最多新建6个到api.foo.com的TCP连接,前6个请求并行发送,第7个排队等待空闲连接复用
  • 如果7个API是顺序发起的(前一个请求响应后才发起下一个),则所有请求都会复用同一个TCP连接

HTTP/2 的优化

是的,HTTP/2 完全解决了HTTP/1.1的单源站并发连接限制问题:

  • HTTP/2 引入了多路复用特性,同一个源站仅需要建立1条TCP连接,所有请求都可以在这条连接上以二进制帧的形式并行发送,互不干扰
  • 没有HTTP/1.1的队头阻塞问题,也不需要为了并发请求建立多条TCP连接,理论上单条连接支持的并行请求数可以达到上百个,性能远高于HTTP/1.1的多连接方案

内容的提问来源于stack exchange,提问作者Joji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:45:01