随着HTTP/2工作组的工作接近尾声以及新标准的实现开始出现,工作组组长Mark Nottingham写了一篇博客对新协议中9件值得期待的事情发表了看法:
- 使用与HTTP相同的API。就像Mark提到的:“要想让HTTP/2成功,就必须让它能在现有的Web中正常工作。因此我们所做的努力是让现有的HTTP更好地工作,而不是去改变这个协议。”尽管也许有机制能让你优化一些新功能,但一般情况下不会有新的方法、header和状态码。
- 更廉价的请求。“HTTP/2使用多路技术,允许多个消息在一个连接上同时交差,因此一个大的响应(或者一个需要消耗服务器很长时间的响应)并不会阻止其它的响应。此外,它增加了头压缩(header compression),因此即使非常小的请求,其请求和响应的header都只会占用很小比例的带宽。这对于移动平台来说,是非常重要的。因为太大的请求header,再加上页面所需的大量资源经过几个来回后,很可能导致页面加载失败。”
- 新协议对网络和服务提供了更友好的设计。“HTTP/2将使用更少的连接,因此服务器和网络的负载都将减少。这对于越来越拥挤的网络来说具有非常重要的意义。HTTP/1采用多连接的方式实现并行数据传输,加剧了网络拥挤的问题。”HTTP/2对每台主机只需一个单独连接,而且只要可能,应尽量将多个网站合并到一台主机上。
- HTTP/2引入了“服务端推(server push)”的概念,它允许服务端在客户端需要数据之前就主动地将数据发送到客户端缓存中,从而提高性能。当然,在某些场景下,客户端可能并不希望这么做,因此HTTP/2也允许客户端拒绝。
- 当客户端(浏览器)改变主意,不再需要某个请求的响应时,HTTP/1的客户端只能关闭连接,而新协议则提供了更好的解决办法。“HTTP/2增加了RST_STREAM frame,允许客户端改变主意。当浏览器进行页面跳转或者用户取消下载时,它可以防止建立新连接,避免浪费所有带宽。”
- HTTP/2提供更多的加密支持,Mark早前的文章说明了其优缺点。
- 如果你喜欢那些可以监听和人工解析HTTP请求和响应的功能,例如使用telnet连接服务器,那么你要做好这些功能不再可用的准备。HTTP/1是基于文本的协议而HTTP/2是基于二进制的。“尽管二进制协议的解析具有更小的开销,以及更小的网络消耗,但这个巨大变化的真正原因是二进制协议更简单,因此更少错误,这是它的优点。”Mark就此进行了讨论,结果表明确实如此。例如,如何界定文本,HTTP/1的严重缺陷之一是脆弱的安全性。“HTTP/1的文本特性也导致了一些安全问题。因为不同的实现对于如何解析一条消息有着不同的决定,因此恶意团体能够以某种的方式入侵(例如,通过response splitting attack)”
- 别期望HTTP/2能够奇迹般地提升服务端或客户端的性能。“关于新协议,更准确的看法是,它清除了一些制约性能的重要障碍。只有当客户端和服务端都学会了如何以及何时使用它的先进特性,性能才会开始逐渐提升。”正如Mark指出的,当今绝大部分网站是基于HTTP/1开发的,都不可避免地受其限制。只有经过时间推移,当它们经过重新配置后,才能发挥HTTP2所提供的先进特性。“此外,HTTP/2的网络友好特性的缺点是可能导致TCP拥塞控制变得更加突出。因为浏览器对每台主机只建立一个连接,初始窗口和丢包将会更加明显。”
- HTTP/2并不是发展的终点,团队已经在考虑后续的发展。“现在人们非常期待HTTP/2正式发布,因此一些高级(和实验性)的特性并没有加入到此版本中。例如推送TLS认证和DNS条目到客户端,两者都能够提升性能。如果实验顺利的话,也许HTTP/3会包含这些。当然,HTTP/3也可能是个解决所有目前未发现的问题的版本。但到目前为止,信心正在不断地增长。无论是社区发布的SPDY的体验,还是HTTP/2的各种实现都表明HTTP/2已经接近完成了。”
相关推荐
《C#新特性详解实用》是一部深入探讨C#编程语言最新特性的实用指南。这篇详尽的解析将带领我们深入了解C#的创新功能,提升我们的编程技能和效率。以下是该资源中的关键知识点: 1. **Lambda表达式**:C# 3.0引入的...
【vSphere 7平台新特性详解】 vSphere 7是VMware公司推出的最新一代虚拟化平台,它在原有的基础上引入了一系列创新特性和增强,旨在帮助企业应对云计算基础架构的挑战,加速企业级应用现代化进程,同时强化了数据...
### JDK8十大新特性详解 #### 一、接口的默认方法 在JDK8之前,接口只能定义抽象方法,不允许有具体的实现。然而在JDK8中引入了一个重要的概念——**默认方法**(Default Methods)。这允许我们在接口中提供一个...
7.新特性2:模块化的特性概述 8.模块化特性的代码实现 9.新特性3:jshell命令的使用 10.新特性4:多版本兼容jar包的使用说明 11.多版本兼容jar包的代码演示 12.新特性5:接口中定义私有方法 13.新特性6:钻石操作符...
同时,还涵盖了UDP协议的应用场景和特性,以及应用层协议如HTTP、FTP、DNS的工作方式。 卷三将焦点转移到了网络层的IP协议和其他相关协议,如路由选择协议RIP、OSPF和BGP,以及因特网的运行和管理。这部分内容对于...
Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。
HTTP的发展经历了多个版本,HTTP/1.x主要基于TCP连接,而HTTP/2和HTTP/3则引入了多路复用和QUIC协议,以提升网络性能和降低延迟。 NNTP(网络新闻传输协议)主要用于在新闻组之间分发和检索文章。NNTP允许用户在...
【Java 17新特性详解含示例代码】 Java 17作为Java的最新版本,引入了一系列提升开发效率、性能和开发体验的新特性。以下是Java 17的主要新特性及其实现方式: 1. **增强的伪随机数生成器 (JEP 356)** Java 17...
HTML:HTML5新特性详解.docx
### Java 9 新特性大全详解 #### 一、概述 Java 9 是 Oracle 在 2017 年 7 月发布的重大版本更新,它不仅引入了许多令人兴奋的新功能和改进,还对 Java 平台的整体架构进行了优化。本文将详细介绍 Java 9 中的关键...
第二卷《TCP/IP实现》则侧重于实际的实现细节,比如TCP的连接管理、滑动窗口机制、超时与重传策略,以及UDP的无连接特性。此外,还涵盖了路由选择算法、DNS域名系统和NAT网络地址转换等内容,这些都是网络通信中不可...
卷2:《TCP》进一步深入探讨了TCP协议的实现细节,包括连接管理、流量控制、拥塞控制、序列号和确认、超时与重传、滑动窗口机制等。这些机制确保了TCP在不可靠的网络环境中提供可靠的数据传输。同时,还涵盖了UDP和 ...
### PS/2鼠标详解:深入理解PS/2接口与8042控制器 #### 引言 PS/2接口,最初由IBM开发并应用于其个人电脑系列中,是一种广泛使用的输入设备接口,主要针对鼠标和键盘。随着技术的发展,虽然USB接口逐渐占据了主导...
卷3,即《TCP/IP详解:应用层》主要关注网络应用程序的设计和实现,包括DNS(域名系统)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、NNTP(网络新闻传输协议)、HTTP(超文本传输协议)等。这些协议构成了...
SQL2012 新特性详解(v1.0).docx
【CSS3网格的三个新特性详解】 在CSS3中,为了解决过去在网页布局上遇到的挑战,尤其是多列网格布局的问题,引入了几个重要的新特性。这些新特性极大地提升了网页设计的灵活性和易用性,使得创建响应式、自适应的...
JAVA8十大新特性详解(精编).txt
本课程主要讲解PHP8.0新特性和新功能核心精选内容。PHP8.0是PHP语言的一个主版本更新,它包含了很多新功能与优化项,包括命名参数、联合类型、注解、构造器属性提升、Match表达式、Nullsafe运算符、JIT,并改进了...
全网详解(波哥)Java8新特性(Lambda、Stream、LocalDate等)新特性 自学java的同行们应该都要学习java8的新特性,譬如:(Lambda、Stream、LocalDate等)!本人在学习java的时候看的是波哥的视频,确实讲的不错,很...