前端浏览器请求里面的timing里面分别有 resource scheduling 和 connection start 还有 request/response 这些分别是什么意思?
HTTP请求生命周期的三个阶段解析: Resource Scheduling(资源调度) 浏览器对资源进行优先级排序、队列等待和预处理,受并发连接数限制(HTTP/1.1默认6个)。关键指标:Queueing(排队时间)、Stalled(阻塞时间)。 Connection Start(连接建立) 包含DNS解析、TCP握手和HTTPS加密协商(如有)。耗时受网络延迟影响,HTTPS会增加100-3
在浏览器开发者工具(F12)的 Network > Timing 面板中,这三个术语对应 HTTP 请求的核心生命周期阶段,按执行顺序排列为:Resource Scheduling → Connection Start → Request/Response。下面用通俗的语言+技术细节拆解每个阶段的含义、作用和关键指标:
一、Resource Scheduling(资源调度阶段)
核心含义:
浏览器在发起实际网络请求前,对要加载的资源进行“规划和排队”的准备阶段——简单说就是“浏览器决定:什么时候、用什么优先级、分配什么连接来加载这个资源”。
关键过程(包含的子阶段):
- 资源优先级排序:浏览器会给不同资源分配优先级(如:HTML/CSS 是「高优先级」,图片/脚本是「中/低优先级」),高优先级资源会插队先加载。
- 队列等待(Queueing):
- 同一域名下,浏览器默认最多同时建立 6 个 TCP 连接(HTTP/1.1 限制),如果连接已占满,后续资源会排队等待空闲连接。
- 若资源依赖其他资源(如:脚本依赖 CSS 加载完成),会等待依赖满足后再发起请求。
- 预处理(Preconnect/Preresolve):浏览器可能提前做 DNS 解析(域名→IP)、TCP 预连接(提前建立连接,减少后续等待),这些操作也会算在调度阶段。
直观例子:
你打开一个页面,同时有 8 张图片要加载。前 6 张图片会立刻分配连接加载,后 2 张会进入「队列等待」,直到前 6 张有一张加载完、释放连接,才会开始加载。这个“等待连接”的过程,就是调度阶段的核心耗时。
对应 Timing 面板的指标:
Queueing:排队等待时间(最常见的调度耗时)。Stalled:资源被阻塞的时间(含排队+预处理)。
二、Connection Start(连接建立阶段)
核心含义:
调度完成后,浏览器与目标服务器建立网络通信通道的阶段——简单说就是“浏览器和服务器握手,打通数据传输的‘管道’”。
关键过程(按顺序执行):
- DNS 解析(Domain Lookup):
- 把资源的域名(如:
cdn.example.com)转换成服务器的 IP 地址(如:119.29.29.29)。 - 耗时:通常 10-100ms,若有 DNS 缓存则耗时接近 0。
- 把资源的域名(如:
- TCP 连接(TCP Handshake):
- 基于 HTTP/1.1 或 HTTP/2 建立 TCP 连接(三次握手),确保数据传输的可靠性。
- 耗时:取决于网络延迟,通常 50-200ms(跨地区/跨国会更长)。
- TLS 握手(若为 HTTPS):
- 若请求是
HTTPS(而非HTTP),会额外进行 TLS/SSL 协商(验证证书、生成加密密钥),建立加密通道。 - 耗时:通常 100-300ms,是 HTTPS 比 HTTP 多出来的核心耗时。
- 若请求是
阶段终点:
当 TCP 连接(或 HTTPS 加密通道)建立完成后,“连接阶段”结束,进入实际的数据传输阶段。
对应 Timing 面板的指标:
Domain Lookup:DNS 解析时间(start → end)。Connecting:TCP 握手时间(connectStart → connectEnd)。SSL/TLS:HTTPS 加密协商时间(secureConnectionStart → connectEnd)。
三、Request/Response(请求/响应阶段)
核心含义:
连接建立后,浏览器与服务器实际传输数据的阶段——简单说就是“浏览器发请求、服务器处理并返回数据”的全过程。
关键过程(按顺序执行):
- 请求发送(Request):
- 浏览器将 HTTP 请求头(含请求方法、路径、Cookie、参数等)和请求体(如:POST 提交的表单数据)通过已建立的连接发给服务器。
- 耗时:极短(通常 1-10ms),因为数据传输速度快,主要耗时在服务器处理。
- 服务器处理(Waiting (TTFB)):
- 服务器接收请求后,进行业务处理(如:查询数据库、计算数据),然后生成响应结果。
- 这是该阶段最核心的耗时(TTFB = Time To First Byte,“首字节时间”),直接反映服务器的响应速度。
- 响应接收(Response):
- 服务器将响应头(含状态码、Content-Type 等)和响应体(如:HTML 内容、图片二进制数据)返回给浏览器。
- 耗时:取决于响应数据大小和网络带宽(如:大图片/视频会耗时更长)。
阶段终点:
浏览器接收完所有响应数据后,该阶段结束,后续会进入资源解析/渲染阶段(如:解析 HTML、渲染图片)。
对应 Timing 面板的指标:
Sending:请求发送时间(requestStart → 响应开始)。Waiting (TTFB):服务器处理时间(响应开始 → 首字节接收)。Receiving:响应数据接收时间(首字节 → 全部数据接收完成)。
总结:三个阶段的核心逻辑
| 阶段 | 核心作用 | 通俗类比 | 优化方向(简要) |
|---|---|---|---|
| Resource Scheduling | 规划资源加载时机/优先级/连接 | 快递发货前,快递员安排配送顺序 | 提升资源优先级、减少域名数(复用连接)、预加载关键资源 |
| Connection Start | 打通浏览器与服务器的通信通道 | 快递员上门前,先确认收货地址+路线 | 开启 DNS 缓存、使用 HTTP/2(多路复用)、启用 HTTPS 预连接 |
| Request/Response | 传输请求数据+处理+返回响应 | 快递员上门取件→仓库处理→送货上门 | 减小请求体/响应体(压缩)、优化服务器逻辑(降低 TTFB)、使用 CDN 加速 |
快速查看技巧:
在 Chrome 开发者工具的 Network 面板中,选中任意请求,查看「Timing」标签页的「Waterfall」(瀑布图),会直观显示每个阶段的耗时占比,能快速定位性能瓶颈(如:Queueing 太长→调度问题;TTFB 太长→服务器问题;Receiving 太长→数据太大/带宽问题)。
更多推荐



所有评论(0)