iOS网络性能优化
2016-05-04 本文已影响1834人
快乐的小梁同学
度量网络性能的三个重要指标
- 网络带宽(两个端点之间的通信通道每秒可以传输的位数,任何网络连接的最大速率取决于通信路径上的最慢链路)
- 网络延时(网络包在两个端点音一次往返所需的时间)
- 设备电量
设备电量
- 屏幕显示与背光
- 位置服务
- Wi-Fi无线电
- 蜂窝无线电
- 图形处理器
- CPU
- 蓝牙无线电
- 声音处理器
如果应用将传输的数据量降到最小,优化对现有的TCP连接的使用,避免不必要的请求,那就可以减少设备无线电的开启时间。
优化网络操作
一,承认网络性能存在的问题是解决问题的第一步。
二,减少请求带宽
- 使用高效的数据交换格式
- 在可能的情况下使用预先压缩的数据(使用专门算法对诸如音频,视频和图像进行压缩或按比例缩放以适应通道与设备)
- 压缩每一个请求与响应负载(iOS网络请求中都是默认开启压缩的,接收到负载会自动解压缩并以最初的格式呈现在代码中。解压缩的计算代价要比传输10倍字节的通信代价低,因此,激活响应压缩几呼是有益无害的)
如果想禁用压缩,应该可以通过清除自动设定的Accept-Encoding头来实现。如相代码演示了如何清除这个头:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:20];
[request addValue:@"" forHTTPHeaderField:@"Accept-Encoding"];
三,降低请求延迟
网络延迟包括在手机与运营商网络间建立连接的时间,建立TCP连接的时间,可能还有协商SSL连接的时间,以及发送与接收HTTP请求的时间。 应用可以按照顺序执行所有队列请求,在这个过程中一直保持激活相同的连接,避免建立多个TCP连接开销。
可以轻松为NSURLRequest开启管道支持,如下:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url]; [request setHTTPShouldUsePipelining:YES];
不过,并非所有的服务器都支持HTTP管道
四,避免网络请求
1.默认缓存行为