Chrome开发者工具:利用网络面板做性能分析

(一)浏览器开发者工具面板功能

Chrome开发者工具:利用网络面板做性能分析_第1张图片

1. 网络面板

网络面板由控制器、过滤器、抓图信息、时间线、详细列表和下载信息概要这 6 个区域构成(如下图所示)。

Chrome开发者工具:利用网络面板做性能分析_第2张图片

(1)控制器

其中,控制器有 4 个比较重要的功能

Chrome开发者工具:利用网络面板做性能分析_第3张图片

1. 红色圆点的按钮,表示“开始 / 暂停抓包”

2.“全局搜索”按钮,可以在所有下载资源中搜索相关内容,还可以快速定位到某几个你想要的文件上。

3. Disable cache,即“禁止从 Cache 中加载资源”的功能,它在调试 Web 应用的时候非常有用,因为开启了 Cache 会影响到网络性能测试的结果。清除缓存加载

4. Online 按钮,是“模拟 2G/3G”功能,它可以限制带宽,模拟弱网情况下页面的展现情况,然后你就可以根据实际展示情况来动态调整策略,以便让 Web 应用更加适用于这些弱网。

search 功能:

Chrome开发者工具:利用网络面板做性能分析_第4张图片

(2)下载信息概要

下载信息概要中,重点关注下 DOMContentLoaded 和 Load 两个事件,以及这两个事件的完成时间。

DOMContentLoaded,这个事件发生后,说明页面已经构建好 DOM 了,这意味着构建 DOM 所需要的 HTML 文件、JavaScript 文件、CSS 文件都已经下载完成了。

Load,说明浏览器已经加载了所有的资源(图像、样式表等)。

(3)详情列表

Chrome开发者工具:利用网络面板做性能分析_第5张图片

接口请求流程:

Chrome开发者工具:利用网络面板做性能分析_第6张图片

发起一个 HTTP 请求之后,浏览器首先查找缓存,如果缓存没有命中,那么继续发起 DNS 请求获取 IP 地址,然后利用 IP 地址和服务器端建立 TCP 连接,再发送 HTTP 请求,等待服务器响应;不过,如果服务器响应头中包含了重定向的信息,那么整个流程就需要重新再走一遍。这就是在浏览器中一个 HTTP 请求的基础流程。

时间线解析:

Chrome开发者工具:利用网络面板做性能分析_第7张图片

1. 第一个是 Queuing

也就是排队的意思,当浏览器发起一个请求的时候,会有很多原因导致该请求不能被立即执行,而是需要排队等待。

2. 等待排队完成之后,就要进入发起连接的状态了。不过在发起连接之前,还有一些原因可能导致连接过程被推迟,这个推迟就表现在面板中的 Stalled 上,它表示停滞的意思。

3. 数据发送出去了,接下来就是等待接收服务器第一个字节的数据,这个阶段称为 Waiting (TTFB),通常也称为“第一字节时间”。 TTFB 是反映服务端响应速度的重要指标,对服务器来说,TTFB 时间越短,就说明服务器响应越快。

4. 接收到第一个字节之后,进入陆续接收完整数据的阶段,也就是 Content Download 阶段,这意味着从第一字节时间到接收到全部响应数据所用的时间。

5. 优化时间线上耗时:

了解了时间线面板上的各项含义之后,我们就可以根据这个请求的时间线来实现相关的优化操作了。

1. 排队(Queuing)时间过久排队时间过久,大概率是由浏览器为每个域名最多维护 6 个连接导致的。那么基于这个原因,你就可以让 1 个站点下面的资源放在多个域名下面,比如放到 3 个域名下面,这样就可以同时支持 18 个连接了,这种方案称为域名分片技术。除了域名分片技术外,还可以把站点升级到 HTTP2,因为 HTTP2 已经没有每个域名最多维护 6 个 TCP 连接的限制了。

2. 第一字节时间(TTFB)

时间过久这可能的原因有如下:

服务器生成页面数据的时间过久。对于动态网页来说,服务器收到用户打开一个页面的请求时,首先要从数据库中读取该页面需要的数据,然后把这些数据传入到模板中,模板渲染后,再返回给用户。服务器在处理这个数据的过程中,可能某个环节会出问题。网络的原因。比如使用了低带宽的服务器,或者本来用的是电信的服务器,可联通的网络用户要来访问你的服务器,这样也会拖慢网速。发送请求头时带上了多余的用户信息。比如一些不必要的 Cookie 信息,服务器接收到这些 Cookie 信息之后可能需要对每一项都做处理,这样就加大了服务器的处理时长。面对第一种服务器的问题,可以想办法去提高服务器的处理速度,比如通过增加各种缓存的技术;针对第二种网络问题,可以使用 CDN 来缓存一些静态文件;至于第三种,在发送请求时就去尽可能地减少一些不必要的 Cookie 数据信息。

3. Content Download 时间过久如果单个请求的 Content Download 花费了大量时间,有可能是字节数太多的原因导致的。这时候就需要减少文件大小,比如压缩、去掉源码中不必要的注释等方法。

 

 

 

你可能感兴趣的:(浏览器工作原理与实践)