摘自自运营微信定阅号 创心思考 ,搜索关注获得更多内容!
移动设备的产品的网络状态取决于用户所处的网络环境。
这个网络环境也会根随的用户的位置进行改变。
也很有可能前一秒是在Wifi网络下,这一秒4G了,再过一会信号就变弱或无信号了。
那么,对于产品的实时性要求很高的产品,如何设定这个超时时长呢?
比如语音识别类的产品,有以下几个产品特性,网络性能对其影响较
1,上行的数据量比较大
2,服务端处理数据的时间,依赖于上传的语音数据量
3,语音识别的过程是个持续的过程,一次完整的语音识别过程
4,用户对于产品的实时性要求较高
这时,网络超时时长的设定就不能以一个最大值的方式来执行了。
1,在网络信号不稳定时,我们需要快速的告知用户,由于网络状态导致识别的过程出错,减少不必要的等待。
2,无论任何网络状态下,任何的数据量,我们都需要保证本次网络请求的有效性。
3,总结一句话,只要这个超时时间精确,以上的问题就可以解决!
看到这里,想必大家都有一定的思路了
这里给大家例一下大概的思路
1,获取当前网络类型,根据网络类型得到该网络类型的网络速度 N.s
2,获取本次客户端上传的真实数据量C.d
3,数据量 C.d与网速N.s作比,得出上传数据所花费时间 C.D.t
4,与服务端确定,处理单位数据量与花费时间值S.P.d,
5,数据量 C.d与单位数据量费时S.P.d关联,得出服务器花费时间S.P.D.t
6,对于服务器返回数据进行预估S.d
7,数据量 S.d与网速N.s作比,得出上传数据所花费时间 S.D.t
8,那么总的超时时间可以为 C.D.t + S.P.D.t + S.D.t(上传数据时间+处理数据时间+下发数据时间)
9,也可能加上建立联接时间的补充
10,一些容错的时长buffer
这么执行下来,超时时长就变得精确多了,无论发送数据量多少,网络是什么样,这个传输变的更可靠。
同理,该方案,也可应用到其它类同的场景中,根据产品需求及技术依赖进行优化。
补充:类似的功能,也可以尝试使用分包的策略降低单次网络请求的失败率,减少总时长,欢迎大家阅读及交流
摘自自运营微信定阅号 创心思考 ,搜索关注获得更多内容!