背景
当你的APP打开慢、图片加载不出、更有甚者提示网络超时等情况,那么想要提供使用起来更快更稳更好的APP,网络质量优化是必不可少的一环。
实践方案
一、客户端测速打点上报
方案:
- 业务自身网络请求埋点上报(rpt、dns、tcp、ssl、fpt等耗时)
- 域名测速埋点上报(多域名配置,也可添加竞品做数据对比看板)
- 域名测速埋点上报时机(APP冷热启动、网络状态切换、业务出现失败等情况)
方案流程图:
基于客户端日志埋点的实践收益:
- 客户端测速
- 网络请求耗时失败率监控
- 客户端链路容灾
- 客户端网络在线诊断
域名测速可能遇到的问题和解决方案
- 问题:客户端测速如果域名特别多,可能会导致速度变慢以及浪费带宽资源。
- 解决方法:域名虽不同但链路相同,测速一组可覆盖所有线路的域名即可。
二、客户端CDN容灾(前置条件:接入多家CDN厂商)
端上方案流程图:
CDN架构:
三、客户端多链路容灾
- 收益:用户网络或者APP服务有问题,客户端可自动选择可访问域名自动恢复服务
- 衡量指标:容灾成功率
方案流程图:
域名切换条件示例(可根据自身业务修改):
- 如:主域名小于1s或都容灾域名和当前域名都大于2s不切换,1s~2s之间差距小于200ms不切换
四、客户端QUIC接入
- QUIC 虽然是基于UDP实现,但功能上等同于 TCP + TLS + HTTP/2
端上方案(Android/iOS):
- QUIC需要客户端和服务端都支持,客户端可使用三方Cronet/libcur网络库,iOS(14.5以上)系统网络库本来就支持
- 衡量指标:耗时、失败率等
五、HTTPDNS接入
- 收益:1、使用IP访问可避免DNS劫持 2、使用预先解析功能可提高用户的DNS解析时间
- 衡量指标:劫持率、耗时、失败率等
方案流程图: