# 启动性能分析

小程序启动是小程序用户体验中极为重要的一环,启动耗时过长会造成小程序用户流失,影响用户体验。 一般来说优化小程序启动性能,是针对耗时更长的 冷启动 性能进行优化。

而在小程序启动流程中,代码包准备小程序代码注入首页渲染耗时是与小程序本身相关的,开发者可以进行一定的优化工作。

在冷启动中,两种最常见用户场景是:

  • 用户首次访问(需下载代码包)
  • 用户非首次访问(已下载代码包)

启动性能分析专项测试,通过多次测试以上两种情况,分析小程序在以上三个阶段的启动耗时情况,帮助用户针对性的提升启动性能。

为了让用户多多体验启动性能分析能力,每个项目可首次免费提测启动性能分析任务。

# 快速开始

进入云测服务后,在页面的右上方点击 新建任务,测试类型选择 启动性能分析,选择测试平台,点击立即创建即可创建新的任务。

任务启动后,会分别执行10次用户首次访问以及非首次访问的小程序启动情况,用户可以通过查看报告看到启动性能测试详细情况。

# 查看报告

任务结束后,用户可以通过在测试任务页面直接点击查看报告按钮进入报告页面。

报告详细展示了用户首次访问(需下载代码包)以及用户非首次访问(已下载代码包)两种情况的测试结果,并通过时序图展示了平均耗时情况分布,让用户可以清晰看到耗时分布情况,找到性能瓶颈

此外,报告还给出了优化建议,帮助用户针对性地提升小程序启动性能。

详情可参考启动性能报告示例

# 进阶使用--支持分析指定页面

启动性能分析一般是分析小程序首页的性能。现在云测也支持分析用户指定的页面,具体使用方法如下:

# 1. 在测试计划中,配置指定页面信息

用户可以在左侧导航栏中,可前往 测试用例管理 => 测试计划 ,新增指定页面的测试计划

# 2. 提交任务时,选择指定测试计划

在提交测试任务时,选择在步骤1中配置的测试计划

# 3. 查看报告

测试报告中,支持用户查看配置页面信息

此外,用户可以通过 分次拉起小程序详情 中的 拉起后截图,查看页面截图

# 改进建议

一般来说,开发者可以利用下表中提到的几个方面,对启动性能进行优化

关键指标 优化建议
代码包准备 使用分包加载
避免使用非必要的全局自定义组件和插件
压缩资源文件或将资源文件放到CDN
删除没有使用的文件或者模块
代码注入 开启按需加载
减少生命周期中的同步API调用
避免进行复杂的运算逻辑
首页渲染 初始渲染缓存
避免引用未使用的自定义组件
精简首屏数据
提前首屏数据的请求
缓存请求数据
使用骨架屏

云测也将性能诊断工具能力集成进来, 在 小程序质检报告中的启动性能环节,有更详细的改进建议。

强烈建议开发者使用质检报告能力,将自动化测试和启动性能测试结合,更好的了解小程序的性能情况

# 常见问题

# 1. 为什么我的启动性能数据,和We分析有一定差距?

云测的启动性能数据,是单次测试结果的整合,We分析是小程序所有线上版大盘数据的平均,所以两者有一定的差距是正常的

# 2. 为什么体验版/开发版的启动耗时,比线上版会高很多?

小程序体验版和开发版的启动的流程不同,代码包下载、小程序代码注入和首页初次渲染的每个环节都有一定差异,两者没有对比的意义。

详情可参考 小程序启动流程 中的常见问题

一般来说,云测建议开发者在新版本发布后,用线上版启动性能去和旧版本对比,准确度会高一些

# 3. 启动耗时的时序图中,为什么不是从0开始?中间有很多缺失的阶段,在做什么?

完整的启动流程,可以在 小程序启动流程 中,有详细的描述。

从流程图中可以看出,整个过程远远不止代码包下载、小程序代码注入和首页初次渲染这三个阶段。

启动性能报告之所以只展示这三个阶段,是因为这三个阶段耗时是与小程序本身相关的,开发者可以进行优化的

在时序图中缺失的部分,是微信客户端和基础库进行的初始化工作,开发者无法修改,报告中也没有展示。

例如从启动流程中可以看出,代码包下载前,还需要从微信后台获取小程序基本信息、代码包地址等操作,所以真正开始下载代码包肯定不是从0ms开始

# 4. 为什么启动总耗时数据,比代码包下载耗时 + 代码注入耗时 + 首页初次渲染耗时大很多?

从常见问题3中可以知晓,启动整个流程远不止这三个阶段,所以 “启动总耗时” 与 “代码包下载耗时 + 代码注入耗时 + 首页初次渲染耗时”之间并不存在必然关联

# 5. 为什么每次下载代码包耗时会有不同?甚至差距还比较大?

影响下载代码包下载速度的主要是手机连接WIFI当前的网速,以及代码包CDN缓存位置

因为云测是真机测试,真机的网速并不是恒定的,有差距,甚至差距比较大,是正常的

所以云测每次做启动性能测试时,会尽量拉取多次取平均值,来平衡网速的差异

如果发现差距大,也可以多重跑几次数据看看,如果仍有问题,欢迎在帮助页面中,扫码加入云测官方企微群,联系群主反馈。

# 6. 为什么开发者工具显示代码包大小和云测不一致

开发者工具显示的是小程序源码包大小。而云测显示的是 源码包经过编译,混淆等一系列操作后,在真机上实际下载代码包大小。

一般来说,云测显示的真机代码包大小会比开发者工具中显示的源码包要大。

此外,开发者重点关注下载包的大小即可

# 7. 为什么启动性能测试,给到的优化建议这么少,而质检报告中给到的建议多很多?

首先,质检报告的启动性能优化检测,使用的是性能诊断工具能力

而性能诊断工具需要做一些额外操作,才能采集数据。而这些操作,会降低小程序启动性能

所以在启动性能专项测试中,没有开启性能诊断工具,直接拉起小程序,从客户端上报数据中获取启动性能各个环节的数据,确保数据的准确性

# 需要帮助

如果你任何建议或需求,欢迎前往 需要帮助 页面,扫码加入云测官方企微群,联系群主反馈。