1网络优化从哪些维度开展
网络优化介绍
正确认识:
1网络优化维度:多维
仅仅重视流量不够
2网络流量的消耗量:精确
整体均值掩盖单点问题
3网络相关监控:全面
粗粒度监控不能帮助我们发现、解决深层次问题
网络优化维度
1流量维度
一段时间流量消耗的精准度量,网络类型、前后台
监控相关:用户流量消耗均值、异常率(消耗多、次数多)
完整链路全部监控(Request、Response),主动上报
2网络请求质量
用户体验:请求速度、成功率
监控相关:请求时长、业务成功率、失败率、TOP失败接口
3其他
公司成本:带宽、服务器数、CDN
耗电
网络优化误区
只关注流量消耗,忽视其他维度
只关注均值。整体,忽视个体
2网络优化工具
Network Profiler
AS自带,显示实时网络活动:发送、接收数据及连接数
需要启用高级分析
只支持HttpURLConnection和Okhttp网络库
演示:
先打开这个功能
![](https://img.haomeiwen.com/i14355128/210a0add39958553.png)
![](https://img.haomeiwen.com/i14355128/07ec322643d7985b.png)
抓包工具
Charles(java开发MAC上使用的多);
Fiddler(Windows上使用的多);
Wireshark;
TCPDump
Stetho
强大的应用调试桥,连接Android和Chrome
网络监控、视图查看、数据库查看、命令行扩展等
![](https://img.haomeiwen.com/i14355128/c3acea7ce1019f20.png)
Stetho不是很强大,一般情况下不使用
![](https://img.haomeiwen.com/i14355128/f62fd2046d29f16b.png)
3精准获取流量消耗实战
如何判断App流量消耗偏高
.绝对值看不出高低
.对比竞品,相同Case对比流量消耗
.异常监控超过正常指标
测试方案:
.设置---流量管理
.抓包工具:只允许本App联网
.只抓域名之下的请求行不行?不行,使用了3方sdk 也会有
.线上场景线下可能遇不见
线上线下流量获取
线上:
1、TrafficStats:API8以上重启以来的流量数据统计
getUidRxBytes(int uid)指定Uid的接收流量
getTotalTxBytes()总的发送流量
总结:不采用他的原因:无法获取某个时间段内的流量消耗,无意义
2、NetworkStatsManager:API23之后流量统计
可以获取指定时间间隔内的流量信息
可以获取不同网络类型下的消耗
![](https://img.haomeiwen.com/i14355128/6e756f8639fac5d9.png)
![](https://img.haomeiwen.com/i14355128/96bbf88f8425f0cf.png)
前台后台流量获取
难题线上反馈App后台跑流量
只获取时间段不够全面
![](https://img.haomeiwen.com/i14355128/9d36a3023c7e95f7.png)
还是用上面的方法,设置时间段参数,写一个定时任务
![](https://img.haomeiwen.com/i14355128/61b993771b8d7be4.png)
![](https://img.haomeiwen.com/i14355128/5a3b76897c1448ac.png)
4网络请求优化实战
使用网络请求的场景概述
数据:API、资源包(升级包、H5、RN)、配置信息
图片:下载、上传
监控:Apm相关,单点问题相关
数据缓存
服务端返回的加上过期时间,避免每次重新获取
节约流量且大幅提高数据访问速度,更好的用户体验
Okhttp、Volley都有较好的实践
Okhttp数据缓存实战
创建拦截器
![](https://img.haomeiwen.com/i14355128/1d501ccae11861a9.png)
![](https://img.haomeiwen.com/i14355128/3809c4a8c510f834.png)
数据增量更新
加上版本概念 只传输有变化的数据
配置信息,省市区县等更新
数据压缩
Post请求Body使用GZip压缩
请求头压缩
图片上传之前必须压缩
优化发送时机和频率
合并网络请求,减少请求次数
性能日志上报:批量+特定场景上报
图片相关
优先使用缩略图
云服务里提供转化则可使用Web格式图片
5网络请求质量优化实战
质量指标
网络请求成功率
网络请求速度
Http请求过程
请求到达运营商的DNS服务器并解析成对应的IP地址
创建连接TCP三次捂手,根据IP找到相应的服务器,发起一个请求
服务器找到相应资源返回。
DNS相关:
问题:DNS被劫持,DNS解析满
方案:使用HttpDNS绕过运营商域名解析过程
优势:降低平均访问时长、提高连接成功率
协议版本升级
三次握手时间长,效率低
1.0:版本TCP连接不复用(已被淘汰)
1.1:引入持久连接,但数据通讯按次序进行。前面慢后面等
2:多工,客户端、服务器双向实时通信
网络请求质量监控
接口请求耗时、成功率、错误码
图片加载的每一步耗时
结合Okhttp实现质量监控
![](https://img.haomeiwen.com/i14355128/28d7844d7493dcaa.png)
![](https://img.haomeiwen.com/i14355128/dbbd56f4740ea7af.png)
![](https://img.haomeiwen.com/i14355128/575f5b60de3f3002.png)
![](https://img.haomeiwen.com/i14355128/67c141d39040c2c2.png)
![](https://img.haomeiwen.com/i14355128/2a7cd53358f06458.png)
![](https://img.haomeiwen.com/i14355128/03da9089400dc7f0.png)
其他
CDN加速,提高带宽。动静资源分离(更新后清理缓存)
减少传输量,注意请求时机及频率
Okhttp请求池
6网络体系化方案建设
线下测试相关
方案:只抓单独APP
侧重点:接口请求是否有误、多余,网络切换、弱网、无网测试。(loddning停止)
线上监控相关
服务端监控
1请求耗时(区分地域、时间段、版本、机型)
2失败率(业务失败与请求失败)
3Top失败接口、异常接口
客户端监控
1接口的每一步详细信息(DNS、连接。请求等)
2请求次数、网络包大小、失败原因
3图片监控
异常监控体系
1服务器防刷:超限拒绝访问
2客户端:大文件预警、异常兜底策略
3单点问题追查,具体分析日志
7模拟面试
1在网络方面做了哪些监控,建立了哪些指标
体现演进过程
并不是一上来就做,wifi成功率高,用户逐渐反馈打不开,流量多,要有数据支撑,和网络体验怎样。补上网络相关监控:质量监控和流量监控。请求成功率和耗时(质量)精确流量消耗,前后台(流量)
2如何有效降低用户流量消耗
梳理接口做缓存,增量更新(省市区县)
上传是对body压缩,图片发送强制压缩
图片展示:feed界面是缩略图,详情里是大图。webP格式使用(云服务支持)
3用户反馈话费流量多怎么查
情况肯定存在,遇到异常情况。
.有数据支撑,建立精准流量获取能力。
.所有请求大小及次数的监控。异常逻辑导致重复下载等
.主动预警能力
网友评论