iOS网络高级编程—高级网络技术(优化请求性能)

网络请求过程的资源消耗在请求及相应的带宽中。可以从这个方向进行思考优化。

1、减少请求的数据量

1.1、选择合适的数据格式

之前写了一篇《iOS网络高级编程—网络功能(生产与解析请求/负载)》介绍了三种数据格式:XML,JSON,HTML。在不考虑其他情况下,JSON是效率最高的格式。其次是XML。

1.2、对请求及响应数据格式进行压缩

通过对数据进行压缩处理,可以减少到10%的原大小。执行压缩会对性能进行一定的损耗,但是相对于10倍数量传输,压缩的消耗是可以忽略不计的。JSON由于数据高度精简,可能在压缩前后的数据量变化不大。但是XML就能体现压缩效果了。

2、降低请求延迟

简要分析下网络通信的过程可以发现网络请求的时间消耗。一般都花在:TCP连接的建立(或许还有SSL),发送与接收HTTP请求时间,如果每次HTTP请求都建立一次TCP连接的话,延迟的消耗就有点大了。

欣慰的是NSURLConnection在每次使用完后,iOS会在关闭了解前保持其开启几秒钟,预防这种情况的出现。但是这样做明显是不够的,我们应该在网络操作类进行相关的处理,如果我们用AF、ASI、MK的话,一般都是有处理的(不确定,还没深入研究)。

此外,在业务层,我们应该考虑周全尽量用比如队列式请求进行人为的优化。

3、避免网络请求

这个简直是大招,没有网络请求的优化是最好的优化。哪里来的数据?缓存~!

优秀的缓存机制是比较复杂的,能在多种情况最大化利用缓存。目前我能想到的是图片缓存,有网络时保存数据以供无网络时读取。这里有两个比较好用的开源库。一个是非常出名图片缓存的”SDWebImage“,及NSURLConnection缓存”RNCachingURLProtocol“。

NSMutableURLRequest类提供了Cache policy的api。详情可参考这篇文章:iOS开发之缓存(一):内存缓存


ok。本篇over。