性能

FMP(首次有意义绘制)

定义: 小程序首次有意义绘制(First Meaningful Paint)耗时。
得分标准: FMP 耗时 ≤ 1500ms
优化建议:

  • 按优先级加载首屏内容,优先展示关键部分。
  • 缓存高优先级数据,减少首屏请求延迟。
  • 预加载关键资源,避免等待 API 回调。
  • 降低一次性渲染数据量,优化计算逻辑。

渲染时间

定义: 页面首次渲染或因数据变化导致的重新渲染时间。
得分标准: 渲染时间 ≤ 500ms
优化建议:

  • 减少 setData 传输量,降低 setData 调用频率。
  • 避免同时渲染大面积内容,优化列表渲染(如虚拟列表)。
  • 减少复杂计算。

页面最低帧率

定义: 页面最低帧率不得低于 30FPS,否则可能会出现卡顿现象。
得分标准: ≥30 FPS
优化建议:

  • 使用 RJS 来处理高频的绘图需求。
  • 将一些视图层需要计算的能力放在 SJS 中操作。

脚本执行时间

定义: JS 脚本在单次同步执行中的耗时。

得分标准: 单次执行 ≤ 1 秒
优化建议:

  • 查看业务代码,确实是否执行了耗时过长的脚本
  • 拆分大任务,使用异步分批执行。
  • 避免阻塞主线程的同步操作,如大数据处理。

setData 调用频率

定义: setData 过于频繁可能会造成界面卡顿。
得分标准: ≤20 次/秒
优化建议:

  • 合并 setData 调用,避免无效更新。
  • 仅更新必要数据,减少 setData 传输数据量。

setData 数据大小

定义: setData 传输数据过大会导致 UI 更新延迟。
得分标准: ≤50KB(JSON.stringify 后)
优化建议:

  • 仅传输必要字段,避免传输整个对象。
  • 使用 setData({a.b.c:1 }) 方式,局部更新数据。

TYML 节点数

定义: 页面 DOM 结构过大影响渲染性能。
得分标准: ≤1000 个节点,树深度 ≤30 层,子节点数 ≤60
优化建议:

  • 减少 DOM 层级,避免深层嵌套。
  • 控制每个节点的子元素数量。

网络请求耗时

定义: 服务器响应时间过长会影响首屏加载速度。
得分标准: ≤1000ms
优化建议:

  • 服务器端优化查询速度,使用缓存。
  • 压缩返回数据,减少 JSON 体积。

网络并发请求数

定义: 并发网络请求过多可能触发小程序请求限制。
得分标准: 每秒并发超 300ms 请求数 ≤10
优化建议:

  • 合并 API 请求,减少不必要的并发请求。

网络图片请求数

定义: 图片请求过多可能导致加载变慢。
得分标准: ≤20 次/秒
优化建议:

  • 采用懒加载,避免一次性加载所有图片。
  • 合理使用 CSS background-image 或雪碧图。

网络图片大小

定义: 图片过大会增加加载时间,影响首屏渲染。
得分标准: 单张 ≤300KB
优化建议:

  • 压缩图片。
  • 使用 CDN 加速图片加载。

小程序通道交互频次

定义: 过于频繁的调用 Kit 能力 可能会导致性能瓶颈。
得分标准: ≤20 次/秒
优化建议:

  • 合理管理 Kit API 调用次数,避免冗余操作。

小程序包大小

定义: 小程序源码包过大影响加载速度。
得分标准: 未分包时 ≤2MB
优化建议:

  • 配置分包,合理拆分代码模块。
  • 静态资源采用 CDN 加载,减少源码包体积。
  • 无用文件、函数、样式剔除。