Skip to content

⚠️ Important Notice

This post was last updated on: which was . Please pay attention to its timelines.

Chrome DevTools-Network面板

Timing

NOTE

下面说的发起请求/发出请求都指的是开始建立TCP连接。

  • Queueing:该请求等待发出的排队时间,导致请求不能立即发送的原因很多。

    • 资源的优先级:HTML/CSS/JS等是核心资源,优先级最高;图片、视频、音频等优先级就较低。低优先级的遇到高优先级的,需要排队等待。

    • 浏览器对同一个域名的TCP连接数量限制。达到限制之后,后面的请求就需要排队。

      • TCP建立连接需要端口号,但是端口号只有那么多,所以做了限制防止端口号被快速消耗。
      • 处理请求需要线程,防止并发数量太多导致的线程频繁切换,从而带来性能问题。
      • 避免超过服务端的并发限制,也避免了恶意攻击。

      NOTE

      总之限制都是为了性能更好。一般一个域名最多会有4-6个。

      另外虽然HTTP1.1有持久连接,多个HTTP请求能复用TCP连接,但是请求和响应还是要按照顺序发送,响应还是要等到上一次请求响应之后才能发送,还是会有队头阻塞问题。

      HTTP2中引入了帧和流,以及多路复用,请求和响应不需要顺序发送,从而真正复用TCP连接。虽然可能引入了更多的问题。🤣

    • 请求在网络进程中发出,需要短暂的等待磁盘空间的分配。

  • Stalled:排队之后,建立连接(发出请求)之前的时间。表示停滞的意思.

  • DNS look-up:DNS寻址时间,时间一般不会很长。

  • Initial connection:和服务器建立连接的时间,其中包括建立TCP连接的时间。

  • SSL:即HTTPS协议时建立SSL连接的时间

Timing2

NOTE

可以看到在http2中,由于多路服用,共用一个TCP,所以Initial connection只会在第一次请求中建立,后面直接复用

  • Request sent:在和服务器建立连接之后,网络进程发送请求的时间。一般很短,因为只需要将浏览器缓冲区的数据发送出去就好了,并不会判断服务器是否接收。

  • Waiting for server response:TTFB(第一字节时间),从发出请求到接收到第一个字节数据所经历的时间。该指标是反映服务端响应速度的重要指标。

  • Content download:从接收到第一个字节到全部响应数据接收完毕的时间。

上一次更新: