通信层优化小结
2020-06-28 本文已影响0人
蒙多喝醉了
通信测试最好使用2G测试,可以慢,但要能跑通,若出现“无法连接到网络”或者“网络连 接超时”的对话框,就是开发人员必须要解决的问题了。
- 1、接口返回的大数据,要使用 gzip 进行压缩
注意:大于 1KB 才进行压缩, 否则得不偿失。经过 gzip 压缩后,返回的数据量大幅减少。
- 2、ProtoBuffer协议是二进制格式的,所以在表示大数据时,空间比 JSON 小很多。
- 3、减少网络访问次数,能调用一次取到数据的,就不要调用两次
- 4、HTTP 协议的速 度远不如使用 TCP协议,因为后者是长连接。缺点是一台服务器能支持的长连接个数不多,所以需要更多的服务器集成。
- 5、要建立取消网络请求的机制。页面跳转等情况,如果无需再进行请求的直接中断请求。过多的请求可能会使网络底层的请求队列已经被阻塞
无论是 iOS 还是Android,
都应该在基类(BaseViewController 或者 BaseActivity)中提 供一个 cancelRequest的方法,
用以在离开当前页面时清空网络请求队列。
- 6、增加重试机制(post 请求是不建议有重试机制的)。
一般将获取数据 的请求接口都定义为 get;而把操作数据的请求接口都定义为 post。
可以为所有的 get 请求配置重试机制,比如 get 请求失败后重试 3 次。
post 下单接口是个 post 请求,如果请求失败那么就会重试 3 次,直到下单成功。
但是有时候 post 请求并没有失 败,而是超时了,超时时间是 30 秒,但是却 31 秒返回了,如果因此而重新发起下单请求, 那么就会连续下单两次。
所以 post 请求是不建议有重试机制的。
此外,对所有的 post 请求, 都要增加防止用户 1 分钟内频繁发起相同请求的机制,这样就能有效防止重复下单、重复发 表评论、重复注册等操作。
如果 post 请求具有防重机制,那么倒是可以增加重试机制。
需要服务器端灵活配置重试的次数,可以是 0 次,意味着不会重试。在 App 启动的时候,告诉 App 所有接口的重试次数。