目前大部分的应用都使用的是 Http 1.1
iOS 9 开始支持 HTTP2.0,也就是 NSURLSession 这个框架会支持HTTP2.0。
在 iOS 9 之前的系统可以考虑 SPDY 方案,twitter 已经有了方案 —— CocosSPDY。
因为苹果针对 HTTP 2.0 做出的API对开发者是透明的,所以移动端在做HTTP2.0支持的时候几乎不需要工作量。服务端可以需要一些部署,但是相对来说也容易很多。
在使用 SPDY 方案的时候,由于苹果的TLS不支持NPN,所以通过NPN写上使用SPDY就无法通过默认端口443来实现。有两种做法:
一、客户端和server同事约定好使用另一个端口来做NPN协商,这种方法简单一点,但是需要从框架层将所有的HTTP请求都Map到另一个Port,可以参考iOS 网络请求优化之DNS映射
二、server 这边通过request header 智能判断客户端是否支持SPDY而越过NPN协商过程,twitter 自己的网站 Twitter 使用第二种方式