微信小程序性能优化

415 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

微信开发者工具中提供了用来检测小程序的性能和体验问题的工具,在开发者工具中的调试器中,点开Audits面板即可看到,我们在Audits面板中点击运行,并操作小程序,就可以看到此工具生成的体验报告,如下:

image.png

我们可以根据上述体验报告中定位出的问题以及给出的建议,针对性地进行更改来提高小程序的性能和体验。除了Audits面板中提供的一些性能优化建议,我们在开发微信小程序的过程当中也有些需要优化的地方。

页面层级优化

在微信小程序当中,页面栈最多是10层,如果页面使用wx.navigateTo连续跳转10次,那么后面再跳转将没有反应,所以应该在跳转的过程中,关闭不需要的页面层级。例如:

  • 使用wx.redirectTo方法,关闭当前页面进行跳转
  • 使用wx.reLaunch方法,关闭当前打开的所有页面进行跳转

接口调用频率优化

微信小程序中的接口有一部分是限频接口(也就是不允许频繁调用的接口),因为这些接口一般会调用微信后台资源,为了防止资源被滥用,开发的过程当中,需要对此类接口的调用频率进行适度的限制。如果调用次数过多,超出了接口调用次数的限制范围,那么将会收到警告,也可能导致调用失败。这类接口如下:

  • wx.login
  • wx.checkSession
  • wx.getSetting
  • wx.getUserInfo
  • wx.getUserProfile

对于这些接口,我们可以将接口返回的数据进行缓存,不要每次都重新调用。

小程序包大小优化——分包加载

如果微信小程序的代码包大小比较大,打开小程序的时间就会比较久,这时候就可以采用分包加载将代码分为主包和分包,主包就是打开小程序的时候马上会加载的页面,分包就可以配置一些后续跳转的页面。在app.json文件里可以直接配置subPackages来实现分包加载,如下:

{
  "pages":[
    "pages/index"
  ],
  "subPackages": [
    {
      "root": "pages/goods",
      "pages": [
        "list",
        "detail"
      ]
    }
  ]
}

上述配置中,打开小程序的时候会先下载pages中的index页面,然后如果后续需要跳转到商品相关的页面,在跳转的时候就会再下载subPackages中商品页面。

setData调用优化

setData更新方法会触发dom更新,所以setData的频繁调用,也会引发性能问题。后续会对setData方法的调用优化进行详细的总结。