Page 196 - Web性能权威指南
P. 196
12.2 走向HTTP 2.0
SPDY 是 HTTP 2.0 的催化剂,但 SPDY 并非 HTTP 2.0。2012 年初,W3C 向社会征
集 HTTP 2.0 的建议,HTTP-WG 经过内部讨论,决定将 SPDY 规范作为制定标准的
基础。从那时起,SPDY 已经经过了很多变化和改进,而且在 HTTP 2.0 官方标准公
布之前,还将有很多变化和改进。
在此,有必要回顾一下 HTTP 2.0 宣言草稿,因为这份宣言明确了该协议的范围和
关键设计要求:
HTTP/2.0 应该满足如下条件:
• 相对于使用 TCP 的 HTTP 1.1,用户在大多数情况下的感知延迟要有实质上、
可度量的改进;
• 解决 HTTP 中的“队首阻塞”问题;
• 并行操作无需与服务器建立多个连接,从而改进 TCP 的利用率,特别是拥塞
控制方面;
• 保持 HTTP 1.1 的语义,利用现有文档,包括(但不限于)HTTP 方法、状态码、
URI,以及首部字段;
• 明确规定 HTTP 2.0 如何与 HTTP 1.x 互操作,特别是在中间介质上;
• 明确指出所有新的可扩展机制以及适当的扩展策略。
对现有的 HTTP 部署——特别是 Web 浏览器 (桌面及移动)、非浏览器(“HTTP
API”)、Web 服务(各种规模),以及中间介质(代理、公司防火墙、“反向”
代理及 CDN)而言,最终规范应该满足上述这些目标。类似地,当前和未
来对 HTTP/1.x 的语义扩展(如首部、方法、状态码、缓存指令)也应该得
到新协议的支持。
——HTTPbis WG 宣言 HTTP 2.0
简言之,HTTP 2.0 致力于突破上一代标准众所周知的性能限制,但它也是对之前
1.x 标准的扩展,而非替代。HTTP 的语义不变,提供的功能不变,HTTP 方法、状
态码、URI 和首部字段,等等这些核心概念也不变;这些方面的变化都不在考虑之
列。既然如此,那“2.0”还名副其实吗?
之所以要递增一个大版本到 2.0,主要是因为它改变了客户端与服务器之间交换数据
的方式。为实现宏伟的性能改进目标,HTTP 2.0 增加了新的二进制分帧数据层,而
这一层并不兼容之前的 HTTP 1.x 服务器及客户端——是谓 2.0。
除非你在实现 Web 服务器或者定制客户端,需要使用原始的 TCP 套接字,
否则你很可能注意不到 HTTP 2.0 技术面的实际变化:所有新的、低级分
帧机制都是浏览器和服务器为你处理的。或许唯一的区别就是可选的 API
多了一些,比如服务器推送!
HTTP 2.0 | 181