冷启动
如果用户首次打开,或小程序销毁后被用户再次打开,此时小程序需要重新加载启动,即冷启动。
触发场景
- 新用户第一个进入小程序
- 用户已经进入过小程序,但小程序被销毁(原因:小程序被删除或小程序在后台等待时间过长,自动销毁了)
首屏加载慢大部分原因是冷启动时加载的数据过多,需要依赖过多的服务端的接口数据等
热启动
如果用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时小程序并未被销毁,只是从后台状态进入前台状态,这个过程就是热启动。
触发场景:用户打开了小程序,在小程序没有被销毁时再次打开小程序,此时小程序还能保存用户上一次的操作状态。
优化方案
1 图片压缩,图片懒加载
2 分包加载
在 app.json subpackages 字段声明项目分包结构:
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/apple",
"pages/banana"
]
}
]
}
分包之后优先加载主tab,二级界面可以理解为按需加载。
分包要注意,主包不能使用二级界面的样式或者js等,因为主包在加载时分包是不加载的。
3 利用缓存
当小程序被销毁需要重新渲染界面时,此时冷启动会再次请求接口加载数据,可以利用小程序提供的缓存方法 wx.setStorage
、wx.getStorage
将数据存储在本地。
4 不使用空白屏
空白屏就是当请求接口的数据没有被返回时,整个界面被 hidden
,此时给用户的感觉就是白屏。
推荐做法:此时可以利用toast
提示加载进度,给用户反馈出加载的进度,会延长用户的等待时间。