Page 203 - Web性能权威指南
P. 203
先,包括分配处理资源和客户端与服务器间的带宽。不过,为了最高效地利用底层
连接,不同优先级的混合也是必需的。
12.3.5 每个来源一个连接
有了新的分帧机制后,HTTP 2.0 不再依赖多个 TCP 连接去实现多流并行了。现在,
每个数据流都拆分成很多帧,而这些帧可以交错,还可以分别优先级。于是,所有
HTTP 2.0 连接都是持久化的,而且客户端与服务器之间也只需要一个连接即可。
实验表明,客户端使用更少的连接肯定可以降低延迟时间。HTTP 2.0 发送的
总分组数量比 HTTP 差不多要少 40%。而服务器处理大量并发连接的情况也
变成了可伸缩性问题,因为 HTTP 2.0 减轻了这个负担。
——HT.TP/2.0
Draft 2
每个来源一个连接显著减少了相关的资源占用:连接路径上的套接字管理工作量少
了,内存占用少了,连接吞吐量大了。此外,从上到下所有层面上也都获得了相应
的好处:
• 所有数据流的优先次序始终如一;
• 压缩上下文单一使得压缩效果更好;
• 由于 TCP 连接减少而使网络拥塞状况得以改观;
• 慢启动时间减少,拥塞和丢包恢复速度更快。
大多数 HTTP 连接的时间都很短,而且是突发性的,但 TCP 只在长时间连
接传输大块数据时效率才最高。HTTP 2.0 通过让所有数据流共用同一个连
接,可以更有效地使用 TCP 连接。
HTTP 2.0 不仅能够减少网络延迟,还有助于提高吞吐量和降低运营成本!
丢包、高 RTT 连接和 HTTP 2.0 性能
等一等,我听你说了一大堆每个来源一个 TCP 连接的好处,难道它就一点坏处都
没有吗?有,当然有。
• 虽然消除了 HTTP 队首阻塞现象,但 TCP 层次上仍然存在队首阻塞(参见 2.4
节“队首阻塞”);
• 如果 TCP 窗口缩放被禁用,那带宽延迟积效应可能会限制连接的吞吐量;
• 丢包时,TCP 拥塞窗口会缩小(参见 2.2.3 节“拥塞预防”)。
188 | 第 12 章