欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发下的网络优化初学

程序员文章站 2022-05-01 17:37:55
工具 profile查看网络请求 debug log看报文 charles看报文、mock url httpdns 直接使用url 网络协议 可以考虑摒弃http,仅使用tcp,原因有3点 1.ht...

工具

profile查看网络请求

debug log看报文

charles看报文、mock

url

httpdns

直接使用url

网络协议

可以考虑摒弃http,仅使用tcp,原因有3点

1.http无法优化弱网

2.http需要dns解析

3.网络连接,发送请求,接受响应在http上的定制性优化不方便

连接维护

有两个概念:

1.piping同时发送多请求

2.mutiplexing二进制分帧可以乱序接受

可以考虑摒弃这两点,用最简单的fifo。

维护若干连接,还可以同时处理一个大请求,如果连接全部在使用中,才开启一个临时连接。

弱网、网络抖动

维护连接数降到1

动态调整connection、write、read超时时间

网络类型切换,连接会失效(ip port ip port是对应的),关闭所有连接,开启新的连接,同时对任务进行重试

数据格式

protobuf

重试机制

如果失败,不再用原有连接,而是开启临时连接,对于建立连接、序列化报文、发送请求3个阶段进行重试(不会产生幂等问题,只要监控好确保请求没有发出去)

应用层4大策略

1.打包请求

2.预加载

3.任务分优先级

(低优先级:比如点赞,因为用户可能不断点赞、取消赞,所以先ui展示,等退出页面后再发请求;

高优先级:请求数据更新ui)

4.错峰(打包是对的,但是100个请求一起发就不好了,因为大部分的网络请求是缓存线程池,只有非核心线程,如果100个加进来,会短时间创建100个线程,其后果可以想象)

压缩报文

http可以压缩header

body可以用gzip压缩

图片传输

webp

做好缓存工作

http1.0强制 服务器给服务器上的到期时间

对比 给资源的最后修改时间

http2.0强制 服务器给到期时间段

对比 给资源的唯一标识

监听wifi、充电

用jobschedule监听wifi、充电,做一些费电、费网的操作,这个时候可以下载大量数据啊,也可以post用户埋点信息啊。。。