为什么要优化网络连接,当然是减少加载时用户的等待时间。虽然现在已经是4G时代,能用上4G移动网络的速度确实很快,但是还有很多用不了4G的时候,网速一慢,加载时的等待时间就变长,体验肯定就不好。
优化最直接的方法就是减少传输时的数据量,传输的东西少了,速度肯定就快。但这不能完全解决问题。所以要用到SPDY。
SPDY
SPDY(SPDY 是 Speedy 的昵音,意思是更快)是 Google 开发的基于传输控制协议 (TCP) 的应用层协议 。SPDY 协议旨在通过压缩、多路复用和优先级来缩短网页的加载时间和提高安全性。SPDY 协议只是在性能上对 HTTP 做了很大的优化,其核心思想是尽量减少连接个数,而对于 HTTP 的语义并没有做太大的修改。具体来说是,SPDY 使用了 HTTP 的方法和页眉,但是删除了一些头并重写了 HTTP 中管理连接和数据转移格式的部分,所以基本上是兼容 HTTP 的。SPDY协议通过压缩、多路复用和优先级来缩短加载时间。
设计SPDY的目的在于降低网页的加载时间。通过优先级和多路复用,SPDY使得只需要创建一个TCP连接即可传送网页内容及图片等资源。SPDY中广泛应用了TLS加密,传输内容也均以gzip或DEFLATE格式压缩(与HTTP不同,HTTP的头部并不会被压缩)。另外,除了像HTTP的网页服务器被动的等待浏览器发起请求外,SPDY的网页服务器还可以主动推送内容。
SPDY并不用于替换HTTP,它只是修改了HTTP的请求与应答在网络上传输的方式;这意味着只需增加一个SPDY传输层,现有的所有服务端应用均不用做任何修改。 当使用SPDY的方式传输,HTTP请求会被处理、标记简化和压缩。比如,每一个SPDY端点会持续跟踪每一个在之前的请求中已经发送的HTTP报文头部,从而避免重复发送还未改变的头部。而还未发送的报文的数据部分将在被压缩后被发送。
于2015年5月以RFC 7540正式发表的HTTP/2标准,则是采用的SPDY协议,但HTTP/2并没有完全普及。
建立链接本身是属于比较消耗资源的操作,耗电耗时。SPDY自带链接复用以及数据压缩的功能,所以服务端支持SPDY的时候,App直接使用SPDY就可以了。
在Apple原生支持HTTP/2之前,最好还是来用SPDY,SPDY目前也有现成的客户端SDK可以使用,一个是twitter的CocoaSPDY,另一个是Voxer/iSPDY。CocoaSPDY使用起来非常的方便,只需要CocoaSPDY框架添加到项目中,然后将其链接到你的服务器,并启用该协议,就完成了。