一期优化取得了显著的效果,从优化前的1.9s,现在稳定在1.5s,基本保持在达标线内
偶尔的抖动观察了下,与后端服务的稳定程度有关
但是感觉优化还是有提升的可能
这里有几个优化方向的思路
目前小程序采用了loading组件过度,但是,由于是资讯类的小程序,页面的内容严重依赖后端接口
如果后端服务不稳定,就像上图所见,很多时候是有波动的,所以对白屏的优化成为了下一个可以优化的点
白屏定义:用户触发页面打开后,间隔一定时间后仍然没有任何页面绘制,则认定为白屏。
白屏检测原理:从用户点击小程序入口开始计算时间,6s后进行截图分析。当截图为空白页面或只有背景色,则记为一次白屏。请注意:此统计规则在2019年9月6日发生变更,变更前为从小程序页面框架创建时开始计时。
白屏监控范围:仅针对小程序进入时的首个页面进行检测。
数据解读:白屏率 = 白屏发生PV / 小程序冷启动打开PV,开发者可以在小程序平台上看到自己小程序白屏率的数据情况。在上述检测机制下,无论小程序启动时出现异常还是页面加载过程较慢,6S时被监测到无内容展示,都会视为白屏。因此在进行白屏优化时,需要从两方面着手,一方面对页面异常问题进行排查,另一方面着重优化页面的性能。
小程序白屏数据出现异常上涨时,可以从以下三个方面着手排查分析:
有些小程序的页面数据展示可能存在前置条件,例如需要登录、定位等。在条件不满足时,可能存在兼容处理问题。这里给出常见的几种case:
小程序框架自身也在不断更新,所支持的能力也在不断更新和扩充。同样,开发者也会对小程序自身也会进行版本更新。这里就涉及到了兼容性问题。小程序框架版本修复Bug记录和版本兼容性,请参考以下连接了解和主动规避:
已有启动性能数据,平均数据和80分位数据较快不一定能保证白屏率就低,白屏case大概率发生在性能的长尾数据中。
从平台跟进的多个小程序白屏数据分析结果来看,小程序白屏率高的主要因素是页面数据加载和渲染较慢。如果小程序上线后白屏数据就处于高位,或者版本更新后白屏数据上涨,可以通过以下方面进行分析和优化:
页面数据加载方式:
针对一次请求返回的数据过多的情况,可以从两个角度来优化:1 、非关键数据延迟请求,2、非关键数据延迟渲染
非关键数据延迟请求:
swan.request({
|
非关键数据延迟渲染
this.setData({keyData}, () => {
|
增加过渡态提示:
页面加载时,可以使用Loading组件等形式进行提示,给用户一个提示,提升用户体验。
使用骨架屏:
骨架屏形式类似下图,可以很好的提升用户使用小程序时的体验。
综上针对白屏,下一期的优化可以从:1. 骨架屏 2.接口稳定性 3. 拆分首页data(重要) 其中以拆分首页data为主,由于小程序和主站是同样的数据,拆分成两个接口有待考察,可以改造setData,不关键的数据,也就是超出一屏的数据,可以放到setData的回调函数中渲染
可以说上次小程序优化这么明显,主要就是因为包的体积优化下去了很多,而包体积优化的重点主要在image的体积减少了很多
而二期主要对于非icon类的图片,可以替换成cdn上的静态资源,进一步减少小程序初次加载的体积
针对一些只在当前组件内用的变量,实际上是不需要放到data中的,因为更新data会导致视图层的更新,而像一些数据是与页面渲染无关的
这些变量完全可以拆出来,放到data外边
这个在一里边有写,可以把首屏外的数据放在setData的回调函数中,目前渲染耗时高的核心原因就是,setData的数据太大了,一下子塞了太多,初次渲染的区域也就太大
关于这一项只能推动后端去做一些更新,目前来说 都在逐步的切换到https
注:由于内部安全红线,相关业务信息已隐藏,转载请著名出处(https://www.cnblogs.com/Sherlock09/p/11904748.html)
原文:https://www.cnblogs.com/Sherlock09/p/11904748.html