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
   191   192   193   194   195   196   197   198   199   200   201