补充:
最新,这个居然被遗弃了,发展真快。废弃之后变为性能矩阵了。
前置知识:
我们已知,可以使用 performance
对象获取常规性能指标。
MDN地址 https://developer.mozilla.org/zh-CN/docs/Web/API/Performance/timing
timing的概念
思考输入了网址到页面渲染结束中间发生了什么?阅读下面这张图:
这个图是最完美的解释,同时还加了性能指标。
重定向 — 缓存 — DNS — TCP — Request — Response
请注意,接下来会接触大量知识概念,但是不需要特意关注,我们先掌握大致的环节。
相关指标
我们再浏览器中打印 performace.timing
可以看到下面的结果:
这表示本次页面的加载耗时。不同的属性有不同的含义,不同指标中间的时差表示了不同阶段的耗时。
具体属性看参考 https://developer.mozilla.org/zh-CN/docs/Web/API/PerformanceTiming
好,就是下面这张图了,连线好累。
这些值也能反映出一些问题:
属性 | 作用 | 影响 |
---|---|---|
DNS解析耗时 | CDN工作是否正常 | 过长,CDN和DNS有问题 |
网络请求耗时 | 返回的同步数据 | 过长,响应缓慢 |
DOM解析耗时 | 渲染DOM、js渲染阻塞情况 | 过长,DOM不合理、js阻塞严重 |
内容传输耗时 | 网络是否通畅 | 过长,网络状况、运行商不好 |
资源加载耗时 | 文档下载时间 | 过长,文档体积过大 |
DOM渲染耗时 | DOM解析完之后,资源加载完成的时间 | 过长,引用的外部资源过多 |
首次渲染耗时 | 浏览器白屏时间 | 过长,体验不好 |
首次可交互耗时 | DOM树解析完成时间 | |
首包耗时 | 从查找DNS到给浏览器返回第一个字节的时间,也就是DNS解析查找时间 | 过长,DNS解析问题 |
页面完全加载耗时 | 下载整个页面的总时间 | |
SSL连接耗时 | 数据安全性、完整性建立 | |
TCP连接耗时 | 建立连接 |
可视化读图
这里提供一个书签,请访问 http://kaaes.github.io/timing/ 获取到一个书签,我们一点击就会出现下面的图
如果我们要上报数据,可以把 performance.timing.toJSON()
和当前的 location.href
上报。