• 加载优化:资源在加载时可做的性能优化
  • 执行优化:资源在执行时可做的性能优化
  • 渲染优化:资源在渲染时可做的性能优化
  • 样式优化:样式在编码时可做的性能优化
  • 脚本优化:脚本在编码时可做的性能优化
  • V8引擎优化:针对 v8 引擎 特性可做的性能优化

    内存泄露指标确定

  • window 对象上新增的属性数量 Reflect.ownKeys等价于 Object.keys

    • 在加载页面之前 Object.keys(window)
    • 离开页面(路由跳转、页面关闭、后台APP关闭等),之前 Object.keys(window)
  • 一些特殊函数,例如产生闭包的函数变量是否重新赋值为 null。
  • 事件触发的次数及事件处理的时间
    • 用 performance.now 判断当下 js 主线程是否堵塞,堵塞情况下事件触发也就一定会延迟或者等待。
    • performance.now() 方法返回当前网页从 performance.timing.navigationStart 到当前时间之间的微秒数,其精度可达 一百万分之一秒。
    • performance.now() 近似等于 Date.now(),但前者返回的是毫秒,后者返回的是微秒,后者精度比前者高 1000 倍。
  • 页面 DOM 元素数量是否异常
    • 深度优先遍历,获取 DOM 树的深度。这里可以根据不同场景不同页面来设定 DOM 树深度的最大阈值。超过最大阈值则平台进行预警。因为这意味着页面有动态新增 DOM 的事情发生。
    • FPS,有明显长波段的不平稳。
    • 重绘的次数。