网络优化的维度:
1 请求速度
2 请求的稳定性
3 减少流量
4 网络安全
1 请求速度:
A DNS解析优化:
一次网络请求的操作是从 DNS 解析开始的,然后建立连接并发送数据到服务端,随后读取从服务端返回的数据,最后将连接释放,一次网络请求操作也就结束了。
IP 直连方式,跳过 DNS 解析流程
B 请求数据打包,通过zip()等将文字信息压缩打包上传
C 数据格式优化,使用json,Protobuf 格式
D 连接池的使用,三次握手跟四次挥手会消耗时间,保持长连接,减少这个握手与挥手的过程;socket连接池的复用,如okhttp 已经为我们实现了,同一个ip地址下会同用一个连接池。
2 请求的稳定性
A 请求失败的处理,对于网络原因导致请求失败,可以采用 1 请求参数本地存储,二次请求。
B 离线存储 , 将上次请求的数据缓存至本地,下次请求时优化加载缓存数据,等网络数据得到了再进行数据的刷新,适合一个新闻等应用场景。
C 弱网优化:
弱网的两大指标:丢包率,网络延时
弱网环境搭建: Fiddler , QNET
使用QUIC 进行弱网优化:
QUIC
是一种udp协议,由google发明,实现了TCP+TLS+HTTP/2
,它还有一个更加响亮的名称: Http/3
,Cronet库对其进行了支持,Android、iOS平台都可以使用。
3 减少流量
A 减少请求次数, 跟服务端商量,合并一些请求,以减少请求
B 断点续传
C 数据压缩 ,Post请求Body使用GZIP压缩,请求头压缩,图片压缩上传
D 网络缓存:okhttp 可以设置缓存拦截器,一些展示类的app 数据更新慢,没有必要时时刷新数据,一定时间内可以从缓存数据拿。
4 网络安全
1 https 的使用
2 HttpDNS的使用,防DNS劫持,okhttp 提供了dns的接口,可以自定义Dns实现类,重写lookup方法。 目前业内主要由第三方厂商提供实现了 HttpDns 的 SDK,比较普及的是阿里云和腾讯云的 HttpDns Service,对于普通开发者而言,可以考虑使用七牛云提供的免费的 happy-dns。
传统的本地dns服务器采用的是udp 协议,而httpNds采用的是tcp,具有更强的稳定性。