常见问题为什么修订HTTP?HTTP/1.1已经很好的服务Web超过15个年头,但它的劣势开始显现。 载入一个Web页面比之前占用更多的资源(详情可见HTTP压缩页大小统计),有效的载入这些资源很难,因为HTTP实际上对每个TCP连接,只允许一个优先的请求。 在过去,对于并发请求,浏览器使用多个TCP连接。然而,这也是有局限的;如果使用了过多的连接,这既是一种计数上的高产(TCP阻塞控制是被有效否定的,导致阻塞事件影响性能和网络),也基本上是不公平的(因为浏览器承受的资源大于它们享有的网络资源)。 同时,大量的请求意味着“线上”有很多重复的数据。 HTTP/1.1耗费大量的开销是与这两个因素有关。如果发生过多的请求,会影响性能。 这些导致了相关行业成为了像雪碧、数据内联、域共享和级联的最佳练习场地。这些问题被认为是底层协议自身的问题,并导致在使用它们时产生了一系列的问题。 谁正在做这件事?IETF的HTTPbis工作组正在开发HTTP/2,他们负责维护HTTP协议。是由若干HTTP实现者、用户、网络运营商和HTTP专家组成。 注意虽然工作组的邮件列表是托管在W3C网站上,不过却不是W3C的功劳。但是, Tim Berners-Lee 和 W3C TAG与WG的进程保持了一致。 大量的人对相关工作作出了共享,不过大部分活跃参与者是来自像Firefox、Chrome、Twitter、Microsoft的HTTP栈、Curl和Akamai这样大项目的工程师,以及若干Python、Ruby和NodeJS的HTTP实现者。 要了解更多IETF参与者,请看IETF之道。你也可以在Github的贡献者图表中了解到哪些人正在对规范做贡献,在我们的实现者列表了解哪些人正在参与实施。 和SPDY是怎样的关系?HTTP/2 第一次出现并被讨论的时候, SPDY 正得到厂商 (像 Mozilla 和 nginx)的青睐和支持, 并被看成是HTTP/1.x 基础上的重大改善. 经过建议和投票之后, SPDY/2 被列为HTTP/2 的基础.从那时起, 根据工作组的讨论和厂商的反馈,它已经有了很多变化。 在整个过程中,SPDY 的核心开发成员都参与了HTTP/2 的发展, 其中也包括 Mike Belshe 和 Roberto Peon. 事实上,已经发布的 SPDY/4 revision 正是基于 HTTP/2的 ,因为SPDY社区现在发现它是作为一种进一步实验反馈到 HTTP/x的工具, 而不是竞争对手. 是 HTTP/2.0 还是 HTTP/2?工作组决定去掉小版本 (“.0”) 因为这在HTTP/1.x中导致了很多困惑. 也就是说, HTTP 的版本仅代表它的兼容性,不表示它的特性和 “亮点” 和HTTP/1.x的关键区别是什么?在高版本 HTTP/2中:
HTTP/2为什么是二进制的?比起像HTTP/1.x这样的文本协议,二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。因为它们对如空白字符的处理、大小写、行尾、空链接等的处理很有帮助。 例如,HTTP/1.1定义了四个不同的方法来解析一条消息;在HTTP/2中,仅需一个代码路径即可。 为什么 HTTP/2 需要多路传输?
|