赞
踩
微信小程序提供了一个“体验评分”的工具插件,可以使用它获得微信小程序的一些性能数据和明显的缺陷,进而根据报告进行相应的优化。
同时,为了方便开发者能够及时发现小程序的体验问题,从开发者工具 1.02.1811150 版本起支持体验评分的 “自动运行” 功能。一旦发现体验分数低于 70 分时,系统会在 console 面板打印一个 warning 信息提示开发者。
然后,根据效果图的分析报告,查看需要优化的细项,并根据说明一一进行优化。常见的优化点包括:
除此之外,微信小程序官方还给出了如下一些要求:
usingComponents
里声明的组件但是没有使用,请将其从 usingComponents
里去除。二、其他常见优化
针对启动性能优化,可以从以下几个方面着手:
控制代码包大小
分包加载
独立分包
当setData的数据过大时,通讯方面会带来巨大的消耗,大部分人面对长列表滚动的时候,一开始的处理方式都是这样的,如果数据不多,只有几页可能不会太暴露问题;但当页数过多,几十页甚至上百页的情况,list的数据会越来越大,每次setData的数据就会越来越多,因而每次页面重新渲染的节点就会越来越多,从而导致滚动到后面,加载越来越慢。另外,由于小程序的视图渲染层和数据逻辑处理层是分开的,不是在同一个线程上面的,从用户触发页面交互,到处理数据逻辑,最后呈现页面,数据到视图是需要传输的,因而小程序本身对数据大小也有限制,不能超过1M。
一次性发送了过多的图片请求,导致了同一时间发起了过多的http请求,http连接是非常耗时的,尤其是一次性发起这么多,并且一次性发起的http链接也是有限制的,比如chrome浏览器就限制一次性最多6个。所以在渲染页面时,不在视图范围内的图片不要不加载,只有元素出现在视图范围内了才渲染。
要实现这一效果,我们可以通过 getBoundingClientRect() 获取元素的位置,然后与页面滚动位置进行比较,如果出现在视图内就加载显示图片。具体实现上,我们可以失业微信提供的 IntersectionObserver 对象,IntersectionObserver 对象可以用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见,示例如下。
let data = list;
<img class="img-{
{index}}" wx:for="{
{data}}"></img>
data.forEach((item,index)=>{
this.createIntersectionObserver().relativeToViewport.observe(`.img-${index}`,res=>{
if (res.intersectionRatio > 0){
this.setData({
item.imgShow:true
})
}
})
})
在列表渲染过程中,巧用key值能够提升列表渲染性能。在小程序开发中,页面的渲染主要分为以下几步:
key值的作用就在第二步,当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。
不正确的使用onPageScroll,可能会带来重复渲染的问题。因此,使用onPageScroll时,应注意以下几点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。