- 网络调优新方法,请求速度一级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 超过 4008 次网络请求中,出现 3 次以上丢包一方面开发者可以通过 缓存管理器 优化弱网时小程序的使用体验,另一方面开发者可以通过事件 wx.onNetworkWeakChange 监听弱网变化,给予用户更好的提示。 wx.onNetworkWeakChange(function (res) { console.log(res.weakNet) // 当前是否处于弱网状态 console.log(res.networkType) // 当前网络类型 }) // 取消监听 wx.offNetworkWeakChange() ------------------------------------- 网络环境对于小程序的体验有着非常重要的影响。通过原因分析了解网络问题的根因,通过使用协议扩展能力提高网络水平,通过网络状态提醒提升用户体验,最终提升请求速度,满足用户需求。关于网络调优的更多内容,请点击 官方文档 了解更多。 如有其他小程序应用相关的问题,可在 微信开放社区小程序交流专区 发帖互动,技术专员将为大家解答及进行深度交流。
2022-05-31 - 同一用户获取到的unionId不相同
这个问题可以按以下方式自查,举个例子: 1.小程序APPID:wx**********6c86a7 ——账号A 公众号APPID:wx**********8d6f47 ——账号B; 2.需要拿到相同的unionID,核实账号A和账号B 绑定同一个微信开放平台账号是:dl******fpt@sina.com ,所以同一个用户的unionid相同; 3.一般出现unionid不同的原因是:该openid不属于账号A,也不属于账号B,而是属于账号C或账号D,而账号C或账号D并没有绑定在同一个微信开放平台账号下,所以unionid不同。
2019-08-28 - 小程序直播组件更新至 1.1.8 版本
小程序直播组件已更新至 1.1.8 版本,请及时更新组件版本,确保能使用新功能。 1,新增商品讲解功能。【功能详细介绍,第 28 页】 直播中,主播能录制商品讲解视频。 观众可在直播中、结束页和回放中观看讲解视频,不再错过任何精彩的时刻! 2,新增商品点赞功能 货架上,观众能给喜欢的商品点赞。 商家可以通过商品点赞量,来判断商品受欢迎程度,为后续打造爆品、预测销量等提供依据。
2020-08-25