Android性能优化—网络优化

网络优化是一个比较大的命题,今天聊一聊在我们业务使用中必要的优化点。

  • 网络请求的划分

网络优化按照业务区分可以分为日志收集、业务请求;按请求的优先级划分可以分为高优先级、中优先级、低优先级;按请求的重要性又可以划分为非常重要、重要、一般、可抛弃;按照请求频次又可以划分为高频次、一般频次、低频词。例如我们的日志收集就属于低优先级、高频次并且可抛弃的网络场景,对于这种网络场景,我们可以采取独立的线程池且不需要任何网络重试操作方案;我们可以针对网络应用场景的优先级、重要性、频次等来决定该场景应该采用怎么样的网络优化方案。

图片

我们在程序设计的过程中,可以通过网络请求分类来合理设计网络请求各种组合策略。

  1. 对于高频次的网络请求采用的独立线程池,以防止高频次的网络请求阻塞其他网络请求。
  2. 对于耗时严重的网络请求(返回的数据量较大)采用独立请求方式。
  3. 建立良好的重试机制,按照重要性来区分是否需要重试或者重试的次数。
  4. 同一线程池内网络请求按照优先级排列好,尽量保证重要的业务优先出栈
  • 传输数据压缩

图片

数据压缩是解决传输过程中数据大的问题,有效减少网络带宽、减少网络失败率,以下是压缩算法:

图片

压缩算法种类繁多,需要针对不同的场合选择不同的算法,没有最好,只有最适合的算法。

平时我们是通过设置http的Accept-Encoding参数为gzip,gzip压缩一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。

  • 合并请求

通过技术手段将多个网络请求合并成一个请求,减少网络请求的频次,如下图:

图片

例如设置一个接口,里面设置一个请求参数,该参数为一个数组,值为合并请求的各个接口名。

  • 使用HttpDns

传统 DNS 存在的问题

当我们发出请求解析 DNS 的时候,首先,会先连接到运营商本地的 DNS 服务器,由这个服务器帮我们去整棵 DNS 树上进行解析,然后将解析的结果返回给客户端,此方式容易产生域名劫持,解析慢、更新不及时。因为缓存、转发、NAT问题导致客户端误会自己所在的位置和运营商,从而影响流量的调度。

HttpDns 概念

HttpDns不走传统的 DNS 解析,而是自己搭建基于 HTTP 协议的 DNS 服务器集群,分布在多个地点和多个运营商。当客户端需要 DNS 解析的时候,直接通过 HTTP 协议进行请求这个服务器集群,得到就近的地址。

目前各大厂云服务都有对应的HttpDns服务,只需要集成即可,HttpDns通过客户端 SDK 和服务端,通过 HTTP 直接调用解析 DNS 的方式,实现了智能的调度,解决传统DNS存在的问题。

  • 其他

我们可以通过设置过期时间(Expires)或Cache-Control来保证数据的有效期(数据缓存)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值