Android 性能优化 -- 网络优化

本文地址 https://blog.csdn.net/CSqingchen/article/details/106671184
最新更新地址 https://gitee.com/chenjim/chenjimblog

  • 服务器合理部署
    服务器多运营商多地部署,一般至少含三大运营商、南中北三地部署。
    配合上面说到的动态 IP 列表,支持优先级,每次根据地域、网络类型等选择最优的服务器 IP 进行连接。
    对于服务器端还可以调优服务器的 TCP 拥塞窗口大小、重传超时时间(RTO)、最大传输单元(MTU)等。
  • CDN 缓存静态资源
    缓存常见的图片、JS、CSS 等静态资源。应用从最近的服务器下载,可优化下载效率
  • 不用域名,用 IP 直连
    省去 DNS 解析过程,DNS 全名 Domain Name System,解析意指根据域名得到其对应的 IP 地址。
    首次域名解析一般需要几百毫秒,可通过直接向 IP 而非域名请求,节省掉这部分时间,同时可以预防域名劫持等带来的风险。
    当然为了安全和扩展考虑,这个 IP 可能是一个动态更新的 IP 列表,并在 IP 不可用情况下通过域名访问。
  • 连接复用
    可以节省连接建立时间,如开启 keep-alive。
    Http 1.1 默认启动了 keep-alive。OkHttpClient 默认开启了 keep-alive。 HttpClient 不建议使用。
  • 增加连接超时
    网络连接底层都是socket连接,增加连接超时,可以避免应用长时间等待返回结果
  • 增加请求超时
    跟连接超时类似,针对跟服务器已经连接,但是接口返回数据超时
  • 减少重定向次数
    额外的 HTTP 重定向可能会增加一次或两次额外的网络往返(如果需要再次查找 DNS 的话就是两次),这在 4G 网络上将会导致数百毫秒的额外延迟
  • 开启gzip压缩
    可以减少减少带宽,减少手机数据流量,加快传输速度,OkHttpClient 默认支持gzip自动解压
  • 应尽可能减少首次呈现内容所需的网络往返次数
    鉴于 TCP 评估连接状况的方式(即 TCP 慢启动),
    新的 TCP 连接无法立即使用客户端和服务器之间的全部有效带宽。
    因此,在通过新连接进行首次往返的过程中,服务器最多只能发送 10 个 TCP 数据包(约 14KB),
    然后必须等待客户端确认已收到这些数据,才能增大拥塞窗口并继续发送更多数据。
    另外还需注意的是,10 个数据包 (IW10) 这一限值源自 TCP 标准的最近一次更新:
    您应确保自己的服务器已升级到最新版本,以便能够充分利用这次更新。
    否则,这一限值可能会降低到 3-4 个数据包!
    参考自 https://developers.google.com/speed/docs/insights/mobile
  • 避免频繁网络请求
    会导致CPU无法休眠,增加手机功耗
  • 使用连接池
    OkHttpClient采用了连接池机制,实现了连接的复用,避免了每次都创建新的连接从而导致资源的浪费。
  • 缓存请求结果
    依据http头信息中cache-contrl及expires确定是否缓存请求结果,可以减少非必要的网络请求
  • 选择合适的数据格式传输
    比如 jsonprotocol 等,可以减少数据量
  • 使用图片缓存
    图片都很占用带宽,在应用使用图片加载框架 GlidePicassoFresco 等,可避免二次下载和解码
  • 对post请求的body做gzip压缩
    可以直接在请求中开启压缩,也可以先压缩日志文件为zip后,再上传。30M的日志可以压缩到2-3M
  • 请求合并
    如果一个页面请求很多,可以考虑将多个请求合并为一个进行请求
  • 精简数据格式
    请求及返回数据中不需要的参数去掉,可以减少数据流量
  • 增量更新
    需要数据更新时,可考虑增量更新。如常见的服务端进行 bsdiff,客户端进行 bspatch。
  • 优化大文件下载
    支持断点续传,并缓存 Http Resonse 的 ETag 标识,下次请求时带上,从而确定是否数据改变过,未改变则直接返回 304。
  • 预取
    包括预连接、预取数据。
  • 分优先级、延迟部分请求
    将不重要的请求延迟,这样既可以削峰减少并发、又可以和后面类似的请求做合并。
  • 多连接
    对于较大文件,如大图片、文件下载可考虑多连接。 需要控制请求的最大并发量,毕竟移动端网络受限。
  • 数据监控
    优化需要通过数据对比才能看出效果,所以监控系统必不可少,通过前后端的数据监控确定调优效果。

本文地址 https://blog.csdn.net/CSqingchen/article/details/106671184
以上大部分参考自 https://www.trinea.cn/android/mobile-performance-optimization


https 通信流程

原文https://zhuanlan.zhihu.com/p/56663184


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清霜辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值