现代浏览器对单域名并发http/1.1请求限制为6~8个,超量请求会排队导致解析卡顿;应通过多子域托管、避免@import、内联关键css、异步加载第三方脚本及慎用loading="lazy"优化。

浏览器对同一域名的并发请求数有硬限制
现代浏览器对单个域名的并发 HTTP/1.1 请求通常限制在 6~8 个。当 HTML 中密集引用了大量同源资源(比如 20 个 img、5 个 script、3 个 link[rel="stylesheet"]),超出的部分会被挂起排队,造成解析“看似卡住”——实际是等待空闲连接,而非 JS 或 CSS 阻塞。
这种停顿在 Network 面板中表现为:多个请求的 Waterfall 起始时间明显错开,且状态栏显示 queued 或 stalled,TTFB 正常但下载延迟高。
- 优先将静态资源(图片、字体、CSS、JS)托管到至少 2 个子域名下,例如
static1.example.com和static2.example.com,绕过单域名连接池瓶颈 - 避免把所有
src都写成./assets/...——构建时用工具(如 Webpack 的publicPath或 Vite 的base)自动分发到不同 origin - 慎用
preload:它会抢占连接池,若 preload 了 5 个非首屏资源,可能把关键 CSS 的请求挤到第 7 位,反而延长 FCP - HTTP/2 或 HTTP/3 环境下该限制基本失效,但需确认服务端真正启用了协议(
curl -I https://yoursite.com查看HTTP/2响应头),否则仍走 HTTP/1.1
script 和 link 标签顺序引发的隐式串行阻塞
即使没超并发数,HTML 解析也会因标签语义被强制串行。典型场景:link[rel="stylesheet"] 后紧跟 script,哪怕 script 加了 defer,浏览器仍会等样式表下载完成才开始下载该 script——这是规范要求,不是 bug。
更隐蔽的是 @import:它在 CSS 文件内部触发新请求,且必须等导入完成才能继续解析后续 CSS 规则,形成“CSS → @import → CSS”三级串行链。
- 把所有
script移到
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











