收藏
评论

网络调优新方法,请求速度一级fast官方

原文来自「微信开发者」公众号,小程序技术研发工程师 binnie 原创。
本文主要介绍了小程序网络调优方法的网络分析、能力支持、网络状态提醒。


伴随着线上化趋势,小程序逐渐成为日常生活的数字连接器,为大家的数字化生活提供便利。在小程序的使用过程中,网络环境对于用户体验有着非常重要的影响。好的网络环境给予流畅的用户体验,赋能小程序业务。

针对网络环境的应用开发,微信团队提出 网络调优方法,提升网络请求速度,优化用户体验。



查一查:网络分析

想要解决网络问题?第一步离不开查明网络问题原因。微信团队提供 Profile 信息、Errno 错误码 2 种网络分析方法,助力开发者快速定位网络问题,解决网络请求难题。


Profile 信息了解耗时信息

基于网络性能分析的需求,微信团队提供 Profile 信息,便于开发者了解网络连接关键时间点的耗时信息。通过以下 2 种方式即可获取 Profile 信息:


Errno 错误码快速定位网络问题

自 iOS 8.0.20 (基础库 2.24.0)、安卓 8.0.20 (基础库 2.23.0) 开始,request 接口支持 Errno 错误码,帮助开发者快速定位网络问题,更好地进行调试。

对比其他错误分析方法,Errno 错误码具有以下优势:

  • 更统一:拥有统一的设计规范,同时不同 API 错误码颗粒度统一,帮助开发者快速辨别错误类型
  • 更便捷:不同 API 出现相同错误,对应错误码一致,便于开发者便捷整理错误类型
  • 更全面:包含 API 类别信息,帮助开发者快速定位问题

Errno 错误码统一简洁的格式助力开发者快速定位网络问题,如何识别错误码?以 (0)600002 错误码为例:

  • (0)6 表示 API 接口的一级类目为【网络】
  • 00 表示 API 接口的二级类目为【通用网络错误】
  • 002 表示具体错误类型为【URL域名不在安全域名列表中】



用一用:能力支持

了解网络错误原因,开发者着手解决网络问题。微信团队提供 request 新参数、perMessageDeflate 压缩扩展 2 种方法,助力网络请求速度提升。


应用新参数,场景化加速网络水平

针对网络请求相关的新协议,微信团队现已提供 5 类新参数,加速网络水平:

  • enableHttp2:如果后台支持,尝试使用 Http2 协议,适用于高并发、高带宽场景
  • enableQuic:如果后台支持,尝试使用 Quic 协议,适用于低延迟、高吞吐场景
  • enableCache:缓存内容,相同请求优先读取本地内容
  • enableHttpDNS:开启 HttpDNS 服务,降低用户连接失败率
  • enableChunked:开启 transfer-encoding chunked 服务,支持分块传输


启动压缩扩展,提升信息收发速度

当 WebSocket 启动 perMessageDeflate 压缩扩展后,收发信息过程自动压缩数据包,提升消息收发速度。

wx.connectSocket({
  url'wss://example.qq.com',// 开发者服务器 wss 接口地址
  header:{ // HTTP Header,Header 中不能设置 Referer
    'content-type': 'application/json'
  },
  protocols: ['protocol1'], // 子协议数组
  perMessageDeflate:"true" // 是否开启压缩扩展,默认是 false
})



拍一拍:网络状态提醒

除了通过分析和解决网络难题,小程序开发者可以通过提醒的方式告知用户当前的网络状态,及时切换网络,提升小程序的使用体验。


前后台切换

在小程序切换后台 5 秒后,自动中断网络请求并且收到 interrupted 回调。建议开发者提醒用户重试,避免造成不良体验。


网络状态变化

小程序网络问题常常出现在断网情况,因此开发者可以通过事件 wx.onNetworkStatusChange 通知网络状态变化,引导用户进行网络切换。

wx.onNetworkStatusChange(function (res) {
  // 当前是否有网络链接,返回的是布尔值
  console.log(res.isConnected)
  // 返回的是网络类型
  // 包括 wifi、2g、3g、4g、5g、unknown(Android 下不常见网络类型)、none(无网络)
  console.log(res.networkType)
})


弱网状态变化

大部分的网络超时问题主要由弱网引起。弱网主要是基于以下现象判定:

  • 8 次网络请求中,出现 3 次以上连接超时
  • 8 次网络请求中,出现 3 次 rtt 超过 400
  • 8 次网络请求中,出现 3 次以上丢包

一方面开发者可以通过 缓存管理器 优化弱网时小程序的使用体验,另一方面开发者可以通过事件 wx.onNetworkWeakChange 监听弱网变化,给予用户更好的提示。

wx.onNetworkWeakChange(function (res) {
  console.log(res.weakNet) // 当前是否处于弱网状态
  console.log(res.networkType) // 当前网络类型
})
// 取消监听
wx.offNetworkWeakChange()


-------------------------------------

网络环境对于小程序的体验有着非常重要的影响。通过原因分析了解网络问题的根因,通过使用协议扩展能力提高网络水平,通过网络状态提醒提升用户体验,最终提升请求速度,满足用户需求。关于网络调优的更多内容,请点击 官方文档 了解更多。

如有其他小程序应用相关的问题,可在 微信开放社区小程序交流专区 发帖互动,技术专员将为大家解答及进行深度交流。

最后一次编辑于  2022-05-31
赞 1
收藏

3 个评论

  • 麦麦
    麦麦
    2023-05-09

    怎么模拟弱网呢?设置了弱网监听,基础库版本号也是符合要求的,设置slow 3g,还是没法触发弱网监听。

    2023-05-09
    赞同 2
    回复
  • dreamhunter
    dreamhunter
    2022-10-14

    学习啦,越来越方便。

    2022-10-14
    赞同 1
    回复
  • Allen
    Allen
    2023-10-11

    8 次网络请求都是什么请求?是小程序自己请求吗

    2023-10-11
    赞同
    回复
登录 后发表内容
课程标签