现在大多数的应用都需要频繁的请求网络,对网络库进行优化的价值是巨大的。作为一个业务团队开发,网络请求多是用基础架构团队提供的库。最近做了一次对比,发现公司基础架构团队提供的网络库比标准 http 快很多(差不多一倍)。核心的优化有以下几点。
- 长连接。keep-alive。这个比较常见。http 1.0 是发一次 http 请求建立一个 tcp 连接,用完就断开连接。而 tcp 连接要 3 次握手建连,4 次握手断连。真是浪费时间。就像我打个电话给 114 ,我问一个问题,电话就挂了,要问第二个问题,还得再拨一次。长连接就是我打了这个电话,可以问很多问题,直到我问完为止。
- 多路复用,spdy / http2 提供的特性,就是说并发,多个 http 请求可以共用一个 tcp 连接了。1 的长连接还是一次还是只能发送一个 http 请求。多路复用可以并发多个 http 请求。并且一个阻塞了不影响另一个。以打 114 为例,我问问题的时候,我朋友也可以问问题,相互不影响。
- 头部压缩。http 1.0 压缩了 body。spdy / http2 支持压缩头部了。可以节省流量。
- 减少建连、SSL 握手次数,通过预置证书就可以减少 SSL 握手的次数。