性能优化相关

页面优化

相关指标

用户体验指标

  • FP(First Paint):首次绘制时间,即浏览器首次将像素绘制到屏幕的时间。即白屏结束时间。
  • FCP(First Contentful Paint):首次内容绘制时间,即浏览器首次绘制 DOM 元素的时间。
  • TTI(Time To Interactive):首次可交互时间,即页面变得可交互的时间。从 FCP 开始计算。
  • FID(First Input Delay):首次输入延迟,即用户首次与页面交互到页面响应的时间。记录 FCP 到 TTI 的时间。
  • FMP(First Meaningful Paint):首次有意义的绘制时间,即首次有意义的内容绘制到屏幕的时间。Lighthouse 6.0 已弃用,优先使用 LCP。
  • LCP(Largest Contentful Paint):最大内容绘制时间,即页面中最大的元素绘制到屏幕的时间。即首屏结束时间。
  • CLS(Cumulative Layout Shift):累计布局位移,即页面上所有元素的布局位移的总和,得分越小越稳定,应努力<0.1。

页面加载指标

  • DomLoading:开始解析 HTML 文档的时间。即 document.readyState 变为 loading 的时间,相应的 document.readystatechange 事件触发的时间。
  • DomInteractive:DOM 可交互时间,即 DOM 解析完成的时间,但是诸如图像、样式表和框架之类的子资源还在加载。即 document.readyState 变为 interactive 的时间,相应的 document.readystatechange 事件触发的时间。此时 defer 的 js 还未执行,没有 defer 时等同于 DOMContentLoaded。
  • DOMContentLoaded:DOM 加载完成时间,即 DOM 树构建完成的时间。即 document.DOMContentLoaded 事件触发的时间。此时 defer 的 js 已执行完毕。但是图片等资源还未加载完成。
  • DomComplete:DOM 完成时间,即 DOM 加载完成且所有资源(如图片、样式表等)也加载完成的时间。即 document.readyState 变为 complete 的时间,相应的 document.readystatechange 事件触发的时间。
  • Load:页面完全加载时间,即页面上所有资源加载完成的时间。即 window.onload 事件触发的时间,同样也是 document.readyState 变为 complete 的时间。

指标数值

  • 容器开销200ms
  • DNS查询25ms
  • TCP链接25ms(其中SSL建连15ms)
  • 请求响应约50ms
  • 内容传输约10ms
  • FP 一般不统计
  • DOM解析约200ms
  • FCP 在1秒内优秀 1.6秒内良好
  • FID = TTI - FCP 在0.1秒内优秀 0.3秒内良好
  • TTI 暂无指标 即DomInteractive
  • defer脚本约300ms 即DomReady(DOMContentLoaded) 介于FCP和LCP 之间
  • 资源加载约600ms
  • LCP 云音乐自定义 在2秒内优秀 3.5秒内良好 即DomComplete(Load)
  • CLS 在0.1以内优秀 0.25以内良好

相关 API

Performance

PerformanceNavigationTiming。替代 Performance.timing。兼容性还不太行。