写点什么

HTTP/2 有哪些值得期待的特性

  • 2014-02-08
  • 本文字数:1711 字

    阅读完需:约 6 分钟

随着 HTTP/2 工作组的工作接近尾声以及新标准的实现开始出现,工作组主席 Mark Nottingham 写了一篇博客对新协议中 9 件值得期待的事情发表了看法:

  1. 使用与 HTTP 相同的 API。就像 Mark 提到的:“要想让 HTTP/2 成功,就必须让它能在现有的 Web 中正常工作。因此我们所做的努力是让现有的 HTTP 更好地工作,而不是去改变这个协议。”尽管也许有机制能让你优化一些新功能,但一般情况下不会有新的方法、header 和状态码。
  2. 更廉价的请求。“HTTP/2 使用多路技术,允许多个消息在一个连接上同时交差,因此一个大的响应(或者一个需要消耗服务器很长时间的响应)并不会阻止其它的响应。此外,它增加了头压缩(header compression),因此即使非常小的请求,其请求和响应的 header 都只会占用很小比例的带宽。这对于移动平台来说,是非常重要的。因为太大的请求 header,再加上页面所需的大量资源经过几个来回后,很可能导致页面加载失败。”
  3. 新协议对网络和服务提供了更友好的设计。“HTTP/2 将使用更少的连接,因此服务器和网络的负载都将减少。这对于越来越拥挤的网络来说具有非常重要的意义。HTTP/1 采用多连接的方式实现并行数据传输,加剧了网络拥挤的问题。”HTTP/2 对每台主机只需一个单独连接,而且只要可能,应尽量将多个网站合并到一台主机上。
  4. HTTP/2 引入了“服务端推(server push)”的概念,它允许服务端在客户端需要数据之前就主动地将数据发送到客户端缓存中,从而提高性能。当然,在某些场景下,客户端可能并不希望这么做,因此 HTTP/2 也允许客户端拒绝。
  5. 当客户端(浏览器)改变主意,不再需要某个请求的响应时,HTTP/1 的客户端只能关闭连接,而新协议则提供了更好的解决办法。“HTTP/2 增加了 RST_STREAM frame ,允许客户端改变主意。当浏览器进行页面跳转或者用户取消下载时,它可以防止建立新连接,避免浪费所有带宽。”
  6. HTTP/2 提供更多的加密支持, Mark 早前的文章说明了其优缺点
  7. 如果你喜欢那些可以监听和人工解析 HTTP 请求和响应的功能,例如使用 telnet 连接服务器,那么你要做好这些功能不再可用的准备。HTTP/1 是基于文本的协议而 HTTP/2 是基于二进制的。“尽管二进制协议的解析具有更小的开销,以及更小的网络消耗,但这个巨大变化的真正原因是二进制协议更简单,因此更少错误,这是它的优点。”Mark 就此进行了讨论,结果表明确实如此。例如,如何界定文本,HTTP/1 的严重缺陷之一是脆弱的安全性。“HTTP/1 的文本特性也导致了一些安全问题。因为不同的实现对于如何解析一条消息有着不同的决定,因此恶意团体能够以某种的方式入侵(例如,通过 response splitting attack )”
  8. 别期望 HTTP/2 能够奇迹般地提升服务端或客户端的性能。“关于新协议,更准确的看法是,它清除了一些制约性能的重要障碍。只有当客户端和服务端都学会了如何以及何时使用它的先进特性,性能才会开始逐渐提升。”正如 Mark 指出的,当今绝大部分网站是基于 HTTP/1 开发的,都不可避免地受其限制。只有经过时间推移,当它们经过重新配置后,才能发挥 HTTP2 所提供的先进特性。“此外,HTTP/2 的网络友好特性的缺点是可能导致 TCP 拥塞控制变得更加突出。因为浏览器对每台主机只建立一个连接,初始窗口和丢包将会更加明显。”
  9. HTTP/2 并不是发展的终点,团队已经在考虑后续的发展。“现在人们非常期待 HTTP/2 正式发布,因此一些高级(和实验性)的特性并没有加入到此版本中。例如推送 TLS 认证和 DNS 条目到客户端,两者都能够提升性能。如果实验顺利的话,也许 HTTP/3 会包含这些。当然,HTTP/3 也可能是个解决所有目前未发现的问题的版本。但到目前为止,信心正在不断地增长。无论是社区发布的 SPDY 的体验,还是 HTTP/2 的各种实现都表明 HTTP/2 已经接近完成了。”

以上这些就是 Mark 对于即将到来的 HTTP/2 的精彩和准确的概览。你觉得这些功能怎么样?哪些会让你有些担心?当它成为主流,你开始使用时,哪些又会让你觉得很兴奋?

查看英文原文: What to Expect From HTTP/2


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-02-08 04:236532

评论

发布
暂无评论
发现更多内容

架构师训练营第二周”框架设计“学习笔记

随秋

极客大学架构师训练营

性能优化总结(一)

Mars

性能优化

安全稳定第十一周作业「架构师训练营第 1 期」

天天向善

架构师训练营 1 期 - 第十一周 - 安全稳定

三板斧

极客大学架构师训练营

架构师训练营第十一周课后作业

Gosling

极客大学架构师训练营

架构师训练营第十一周作业

Shunyi

极客大学架构师训练营

安全稳定-安全架构高可用

garlic

极客大学架构师训练营

Spring 源码学习 07:ClassPathBeanDefinitionScanner

程序员小航

Java spring 源码 源码阅读

架构入门学习感悟之七

笑春风

沉默的性能杀手 - false sharing

helbing

Go 语言

架构师 3 期 3 班 -week3- 总结

zbest

总结 week3

第十一周 安全稳定 总结

三板斧

极客大学架构师训练营

架构师训练营 week7 学习总结

花果山

极客大学架构师训练营

周练习 11

何毅曦

架构师 3 期 3 班 -week3- 作业

zbest

作业 week3

架构师第十一周总结

_

极客大学架构师训练营 第十一周总结

第十一周作业

极客大学架构师训练营

架构师训练营第十一周学习总结

Gosling

极客大学架构师训练营

架构师训练营第 1 期 - 第 11 周课后练习

Anyou Liu

极客大学架构师训练营

性能压测练习

Mars

架构师训练营第 11 周作业

netspecial

极客大学架构师训练营

架构师训练营 week7 课后作业

花果山

极客大学架构师训练营

架构师训练营第二周”框架设计“作业

随秋

极客大学架构师训练营

基于 localStorage 实现一个具有过期时间的 DAO 库

徐小夕

Java 算法 大前端

面试官:说说你对【注解】的理解

田维常

学习总结--week11

张荣召

架构师训练营第二周总结

J

极客大学架构师训练营

作业-第7周 性能优化一

arcyao

ShardingSphere RAW JDBC 分布式事务 Atomikos XA 代码示例

Java MySQL 数据库 分布式事务 ShardingSphere

架构师训练营 1 期第 11 周:安全稳定 - 作业

piercebn

极客大学架构师训练营

第七周课后练习

lithium

HTTP/2有哪些值得期待的特性_DevOps & 平台工程_Mark Little_InfoQ精选文章