控制条
- 录制:加载时、运行时 (注意:录制时长)
- 导入、导出
- 屏幕截图
设置项
- 禁用JS采样:当在移动设备上运行时,可以禁止,以减少开销
- 启用高级绘制分析:当确定绘制是瓶颈时,再开启(否则它引入的性能开销,会影响数据)
- 网络节流
- CPU节流
操作 | 选中 |
|
缩放 |
|
|
平移 |
|
|
看截屏 |
|
|
关注点 | FPS |
|
CPU |
|
|
三竖线 |
|
DOMContentLoaded | when the initial HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading | 可以访问DOM |
load | when a resource and its dependent resources have finished loading. | 完全加载完毕 |
X轴 | line-bar(时间) | 灰色线(左) | Queued/Stalled | 若太长,说明排队等待的时间过程 |
透明条 | TTFB | 若太长,说明网慢/服务器本身响应慢 | ||
深色条 | 下载内容 | 若太长,说明文件内容大 | ||
灰色线(右) | 等待主线程的时间 ( Network / Timing 里未显示) | |||
Y轴 | 资源(可并行) |
|
||
操作 | X轴 | 可缩放,鼠标滚轮 | ||
Y轴 | 可上下滚动,鼠标滚轮+Shift / 点击拖拽滚动条 | |||
整体 | 可平移,同 Overview | |||
点击资源条 |
|
Resource Scheduling | Queueing |
请求正在排队。有以下几种原因:
|
Connection Start | Stalled | 停滞。由于 Queueing 中列的任何原因而暂停 |
DNS Lookup | DNS 查找。浏览器正在解析请求的 IP 地址 | |
Proxy Negotiation | 代理协商。浏览器正在与代理服务器协商请求 | |
Initial Connection | 建立连接。包括 TCP 握手/重试和协商 SSL 的时间 | |
SSL | 完成 SSL 握手 | |
ServiceWorker Preparation | sw 准备。浏览器正在启动 sw | |
Request/Response | Request to ServiceWorker | 请求 sw。该请求正在被发送给 sw |
Request Sent | 请求发送。请求正在发送,通常不到1ms | |
Waiting (TTFB) | 浏览器正在等待响应的第一个字节,Time To First Byte 该时间包括一次往返延迟和服务器准备响应的时间 |
|
Content Download | 浏览器正在接收响应 | |
Receiving Push | 浏览器正在通过 HTTP/2 服务器推送接收此响应的数据 | |
Reading Push | 浏览器正在读取以前收到的本地数据 |
介绍 | x轴 | 记录时间 | 每个 bar 代表一个事件,越宽代表事件花费的时间越长 |
y轴 | 调用堆栈 | 多个事件彼此堆叠,上面的调了下面的/父子函数 | |
颜色 |
|
||
操作 | 查看详情 | 点击事件,看 Summary (点击Main的空白处,Summary 回到显示 Overview 中选中的全局态) |
|
顺序预览 | 选中一个事件后,上下左右箭头 | ||
查找 | cmd+F,搜索事件/也可输入正则(Cancel 退出) | ||
隐藏详细调用栈 | Disable JavaScript samples,选中只看顶级事件 | ||
关注 | 红三角 | 事件右上角的红三角:警告,占用主线程时间太长了 | |
太宽的事件 | 条越宽,代表执行时间很长 | ||
其它视角 |
|
Parse HTML | 构建 DOM | |
Evaluate Script | 执行 JS | |
Parse Stylesheet | 构建 CSSOM | |
Recalculate Style | 构建 RenderTree | |
Layout | 布局/自动重排 |
|
Paint | 绘制/栅格化 | Paint/Raster |
Composite Layers | 合成 |
在主进程上执行的任务,Summary 里的字段会据任务的不同而不同。此处列出部分活动里的关键字段。
以下的链接均为空,旨在表示:在面板里点击该链接,会打开特定文件或直接定位到具体代码行
公共字段有:
字段 | 值(示例) | 说明 |
---|---|---|
Total Time | 0 | |
Self Time | 0 | |
Pending for | 0.0 ms | |
Initiator | reveal | |
First Invalidated | 第一次触发的地方 | |
Aggregated Time |
不同的任务,又有各自的详情字段。下面按照功能,将这些任务分为特定组来介绍。
- Send Request
- Receive Response
- Receive Data {n}
- Finish Loading
对象 | 字段 | 值(示例) | 说明 |
---|---|---|---|
Send Request | Resource | www.so.com/ | |
Request Method | GET | ||
Priority | Highest | ||
Preview | 若是图片,则有预览 | ||
Receive Response Receive Data Finish Loading |
Resource | www.so.com/ | |
Encoded Data | 65536 Bytes | 若是.html,则收到第一个 Receive Data 就可以 开始 Parse HTML 了 |
|
First Invalidated | pull @ :formatted:12520 | ||
Receive Response | Status Code | 200 | |
MIME Type | text/html | ||
Finish Loading | Decoded Body | 78782 Bytes | 值是n次Receive Data 的Encoded Data之和 |
- Parse HTML
- Parse Stylesheet
- Evaluate Script
对象 | 字段 | 值(示例) | 说明 |
---|---|---|---|
Parse HTML | Range | - (index):0 [0…89] - (index):90 [90…98] - (index):99 [99…113] - (index):114 [114…120] - (index):121 [121…-1] |
开始 结束 |
Evaluate Script | Script | (index):21 |
- Recalculate Style
- Layout
- Update Layer Tree
- Paint
- Composite Layers
对象 | 字段 | 值(示例) | 说明 |
---|---|---|---|
Recalculate Style | Elements Affected | 720 | |
First Invalidated | - setPlatform - addClass @ (index):115 - style @ :formatted:8712 |
||
Layout | Nodes That Need Layout | 958 of 958 | |
Layout root | #document | ||
First Layout Invalidation | - style @ [:formatted:8712] -(anonymous) @ (index):115 |
||
Paint | Location | (0, 0) | |
Dimensions | 1280 × 1846 | ||
Layer Root | #document |
Type 有以下几种:
- beforeunload
- readystatechange {n}
- DOMContentLoaded {n}
- load
- pageshow
- pagehide
- visibilitychange
- webkitvisibilitychange
- unload
- readystatechange
- load
- scroll
- ...
load
的触发时机:任何资源加载完后,都会触发,eg .html/js/css/png/jpg/...
- XHR Load
- Timer Fired
- Major GC
- Minor GC
- DOM GC
- ...
对象 | 字段 | 值(示例) | 说明 |
---|---|---|---|
Timer Fired | Timer ID | 6 | |
Timer Installed | checkForLoad @ :formatted:1 | ||
Major GC | Collected | 0 B | |
DOM GC | Details | - collect - idle sweep |