# 评测标准
诊断工具从启动性能、跳页性能、最佳实践、操作体验和网络性能五个方面进行评测。
部分启动性能指标含义与跳页性能指标相同,性能报告中区分首页和其它页面,可以更方便地排查启动流程中的问题。
# 名词解释
- 长任务: 执行耗时超过 50ms 的函数。
- 按需注入:仅注入当前访问页面所需的自定义组件和页面代码。
- 用时注入:开启「按需注入」特性的前提下,「用时注入」可以指定一部分自定义组件不在小程序启动时注入,而是在真正渲染的时候才进行注入。
# 指标清单
分类 | 指标 | 未通过标准 |
---|---|---|
启动性能 | App 生命周期中的长任务 | 生命周期函数耗时 > 50ms |
避免非必要的全局插件 | 存在全局引入的插件 | |
使用「按需注入」 | 未开启「按需注入」 | |
首页重定向 | 首页启动后立即重定向到其它页面 | |
内联 base64 图片 | 首页 WXSS 中内联 base64 图片 > 10kB | |
跳页性能 | 同步 API 阻塞 | 页面渲染前多次调用同步 API |
页面打开请求 | 页面纯请求耗时 > 200ms | |
声明但未使用到的组件 | 页面访问过程中未使用到的组件 | |
页面生命周期中的长任务 | 页面生命周期函数耗时 > 50ms | |
优先展示顶部搜索框 | 新开页面未优先展示顶部搜索框 | |
进入详情页复用图片 | 点击图片进入详情页未复用图片导致白屏 | |
最佳实践 | 缓存 storage 结果 | 首页重复获取相同键值的本地缓存 |
合理控制本地缓存大小 | 本地缓存占用超过 50% | |
缓存 systemInfo 结果 | getSystemInfo 同步&异步接口调用超过3次 | |
避免未处理的 JavaScript 异常 | 存在未处理的 JavaScript 异常 | |
脚本执行耗时过长 | 页面方法耗时 > 50ms | |
避免空的 onPageScroll 函数 | 存在空的 onPageScroll 函数 | |
缓存 getLocation 结果 | 30s 内重复调用 getLocation | |
避免在 scroll 事件处理耗时逻辑 | 存在 scroll 事件处理耗时 > 10ms 或总耗时 > 150ms | |
适当调整图片大小 | 存在图片太大而有效显示区域较小 | |
传送现代格式的图片 | 使用 webp 替代 JPEG 和 PNG 图片 | |
对图片进行高效编码 | 对图片进行适当压缩 | |
使用视频格式制作动画内容 | 大型 GIF 转换为视频更为高效 | |
避免 wx.on 类型接口导致的内存泄漏 | 页面销毁时仍未移除 wx.on 类型监听器 | |
避免 observe 类型接口导致的内存泄漏 | 页面销毁时仍未停止 observe 类型监听器 | |
操作体验 | 轮播组件切换时复用节点 | 轮播组件切换时未复用节点导致闪白 |
合理设置可点击元素大小 | 存在可点击元素宽高 < 20px | |
交互事件响应迅速 | 存在交互事件处理耗时 > 50ms 或总耗时 > 150ms | |
自定义 tabbar 切换时无闪烁 | 自定义 tabbar 切换时存在闪烁 | |
网络性能 | 使用 HTTP/2 | 有请求未使用 HTTP/2 |
避免网络请求失败 | 存在网络请求失败 | |
避免网络状态码异常 | 存在网络状态码异常 | |
减少网络排队数量 | 网络排队个数>50 或平均排队耗时 > 1500ms |