首屏渲染优化
页面首屏渲染的优化,目的是让「首页渲染完成」(Page.onReady) 尽可能提前。但很多情况下「首页渲染完成」可能还是空白页面,因此更重要的是让用户能够更早的看到页面内容(First Paint 或 First Contentful Paint)。
1. 避免引用未使用的自定义组件
在页面渲染时,会初始化在当前页面配置通过 usingComponents 引用的自定义组件,以及组件所依赖的其他自定义组件。未使用的自定义组件会影响渲染耗时。
当组件不被使用时,应及时从 usingComponents 中移除。
2. 精简首屏数据
首页渲染的耗时与页面的复杂程度正相关。对于复杂页面,可以选择进行渐进式的渲染,根据页面内容优先级,优先展示页面的关键部分,对于非关键部分或者不可见的部分可以延迟更新。
此外,与视图层渲染无关的数据应尽量不要放在 data 中,避免影响页面渲染时间。
3. 提前首屏数据请求
很多小程序在渲染首页时,需要依赖服务端的接口数据(如商品列表等),此时小程序的首页可能是空白或者骨架屏。
由于网络请求需要相对较长的时间,我们建议开发者在 Page.onLoad 或更早的时机发起网络请求,而不应等待 Page.onReady 之后再进行。
4. 缓存请求数据
小程序提供了 dlt.setStorage、dlt.getStorage 等读写本地缓存的能力,数据存储在本地,返回的会比网络请求快。如果基于某些原因导致网络请求过慢,我们推荐优先从缓存中获取数据来渲染视图,等待网络请求返回后进行更新。
5. 骨架屏
骨架屏通常用于在页面完全渲染之前,通过一些灰色的区块大致勾勒出轮廓,待数据加载完成后,再替换成真实的内容。
建议开发者在页面数据未准备好时(例如需要通过网络获取),尽量避免展示空白页面,而是先通过骨架屏展示页面的大致结构,请求数据返回后再进行页面更新。以提升用户的等待意愿。