likes
comments
collection
share

小程序优化实践(二)

作者站长头像
站长
· 阅读数 49

一、性能测试数据

测试手机:华为 Mate8

性能指标说明:

小程序优化实践(二)

测试路径:

首页->聚合列表页->门店商详->商城首页->商城档期列表->商城商详

小程序优化实践(二)

firstRender

页面Wall DurationSelf Time FPSCPU(%)MEMORY(MB)
pages/index/index308.000 ms305.000 ms11~1616685
pages/brandList/index136.000 ms135.000 ms25~6016~24526
pages/productDetail/productDetail226.000 ms223.000 ms16530
pages/mall/index134.000 ms134.000 ms51~5918~29562
mall/brand/index98.000 ms98.000 ms17~6011596
mall/productDetail/productDetail238.000 ms233.000 ms45~604.6584

reRender

页面Wall DurationSelf Time FPSCPU(%)MEMORY(MB)
pages/index/index3,413.000 ms3,317.000 ms8~6024~29525~649
pages/brandList/index243.000 ms29.000 ms17~5916519
pages/productDetail/productDetail194.000 ms172.000 ms43555
pages/mall/index86.000 ms84.000 ms14~6029570
mall/brand/index447.000 ms436.000 ms6011~34577~596
mall/productDetail/productDetail256.000 ms77.000 ms594.6~28584

初步结论

首页存在明显性能瓶颈

二、页面分析

1、pages/index/index

小程序优化实践(二)

小程序优化实践(二)

总结:首页首屏之后有一个长达3s左右的重渲染

原因

XXX/getPromotionList聚合接口数据量过大, 超过100条数据,且存在大量冗余字段

小程序优化实践(二) 前端在品牌列表setData的时候也没有过滤不需要的字段,一次性渲染的数据量过大,渲染时间过长

小程序优化实践(二)

优化:精简setData的字段,减小setData的数据量;分页展示,首屏只load部分数据

2、pages/brandList/index

小程序优化实践(二)

小程序优化实践(二) 总结:渲染时间不长,但是渲染之间的间隔时间较长

原因:接口请求没有并行。登录成功后setData才去请求shopInfo,shopInfo之后才调brandInfo和goodList

优化:这些接口不依赖登录,也没有相互依赖关系。只有分享图的绘制需要等待三个接口。可以先渲染,延迟分享图的绘制。

3、mall/brand/index

小程序优化实践(二)

小程序优化实践(二) 总结:首次渲染时间很快,重渲染时间略长,导致白屏时间较长

原因:页面结构都等待接口返回才渲染

优化:可以先渲染不依赖接口返回的页面结构

优化方向

  1. 聚合列表优化:精简setData的字段,减小setData的数据量;分页展示,首屏只load部分数据

  2. 聚合列表页:优化接口并行请求

  3. 商品列表:设置onReachBottomDistance, 分页去掉全局loading

  4. 档期流:设置onReachBottomDistance提前请求;增大每页数据量,现在每个场次的档期数量只有3个,以至于每次分页只加载3个,显得很不流畅。跟运营商量能否合并一些场次?

  5. 商城档期列表:可以先渲染不依赖接口返回的页面结构,减少白屏时间

  6. 商品详情页:精简setData的数据量,去除不必要的数据,减少首屏渲染数据量。列表数据做缓存。

  7. 减少代码包大小:去掉搬运过来不用的代码,代码分包优化

  8. 使用懒注入

优化后性能测试数据

firstRender

页面Wall DurationSelf Time CPU(%)MEMORY(MB)备注
pages/index/index362.000 ms359.000 ms-314
pages/brandList/index191.000 ms189.000 ms13450
pages/productDetail/productDetail283.000 ms282.000 ms18501
pages/mall/index59.000 ms134.000 ms18~29637改版添加了子频道功能
mall/brand/index139.000 ms136.000 ms22425
mall/productDetail/productDetail201.000 ms196.000 ms10548

reRender

页面Wall DurationSelf Time CPU(%)MEMORY(MB)
pages/index/index614.000 ms 522.000 ms- 317
pages/brandList/index175.000 ms120.000 ms26540
pages/productDetail/productDetail110.000 ms108.000 ms30541
pages/mall/index302.000 ms281.000 ms20592改版添加了子频道功能
mall/brand/index393.000 ms385.000 ms26562
mall/productDetail/productDetail214.000 ms202.000 ms38578

总结:首页加载优化后首屏渲染时间明显减少,启动内存下降,整体内存峰值有所有下降,尤其是商详跳转商详的内存峰值

P.S.写于2021-07-16 有些过时的东西可能不适用于当前

转载自:https://juejin.cn/post/7329350541136560182
评论
请登录