21CTO导读:
HTTP/2是HTTP的最新版本。HTTP是用在互联网上请求和接收页面和数据的网络协议,不久将取代HTTP/1.1。HTTP/1.x版本已经运行了超过了二十年,该更新换代了。
HTTP/2和HTTP/1/1的区别
HTTP/2的全名:HTTP/2.0。它源于Google在2009年制定的SPDY(发音为speedy)协议。
HTTP/1.1的一些缺陷
这个协议是在网页尺寸很小的时候,不能超过100K,还没有CSS的时候创建的协议;
当前互联网网站首页数据量下载很大,达到1.9M,更重要的是首页上的对象元素平均有100多个,这100多个对象必须抓取完毕后才能显示整个首页。
HTTP1.1规定一个客户端允许连接到每个主机最多两个,这样不违反规定的情况下,聪明的网站将使用多个主机名,能够降低页面的装载时间。随着时间推移,规定中的限制已经去除,现在客户端用6-8个连接每个主机,但是使用这个技术实现大量连接还是有限制的。大部分网站需要38个TCP连接来显示网站,这个数字还在缓慢增加。将资源或图片放在另外一个主机中不能使用任何cookie。
HTTP1.1只能做几个最基本的表单验证和简单效果,其余需要有JavaScript介入来处理;
HTTP1.1带宽占用率高;
使用单一Ajax异步处理;
单页应用程序和框架已经使用多年,比如我们想同时对几个页面发出请求,这HTTP 1.1搞不定。
HTTP/2.0的发布,其主要目标是减少延迟,提高通信效率。其特性包括如下。
HTTP/2.0的特性
1、HTTP/2使用二进制数据流,HTTP/1.x使用效率较低的文本数据。
2、HTTP/2支持头压缩
在请求后,返回的数据包括描述信息:来源,类型,长度,可以缓存的时间等。并且在HTTP/2中进行了压缩。
3、HTTP/2使用管道Pipelining传输
在HTTP1.1中服务器必须与接收请求,以相同的顺序进行收发响应。HTTP/2支持异步,可以更快的处理响应。
4、HTTP/2支持多路复用
在HTTP1.1里,在任何时间只能在TCP连接处理一个请求,浏览器同时请求几个连接时,如果是大或慢的资源会导致文件下载延迟。HTTP/2可以允许在同一时间的单个连接发出多个请求和接收多个响应。
假设两种火车代表不同的流。请看下图:
然后,将它们排在一个连接上进行传输,如同行驶在单个铁轨上一样:
HTTP/2连接可以承载数十或数百个流的复用,多路复用意味著来自很多流的数据包能够混合在一起通过同样连接传输,两列不同火车被混合在一起传输,当到达终点时,它们又被拆开组成两列不同的火车。
在HTTP1中你需要维持连接以便持续发送和接受数据,这导致数据拥挤和RTT浪费损耗,在HTTP2中,所有流都能时刻被切断提取数据包。
5、HTTP/2支持服务器推送
服务器可在请求前发送资源。客户端请求一个资源X,服务器端判断也许客户端还需要资源,在无需事先询问客户端情况下将资源Z推送到客户端,客户端接收到后,可以缓存起来以备后用。
比如在网页中引用一个js脚本,在HTTP1.x时,浏览器下载后以HTML解析,遇到<script>标记时运行js。而HTTP2可以知道发送给客户端的是一段JavaScript。
HTTP2是不是明显比1.x好呢?
结果可能不太一致。但是使用HTTPS测试工具证明HTTP2比HTTP1.x快了10倍,还使用了加密连接。
那么,我们现在可以使用HTTP2.0吗?
是的,当然可以。
前提是需要Web服务器和浏览器都支持才可以启用HTTP/2,任何一端不匹配,则会回退到HTTP/1.1。
有数据表明,全球排名1000万个网站,有12%左右已经支持HTTP/2.0。
值得高兴的是,目前所有新版本的浏览器:Firefox,Safari,Edge,Chrome以及其它基于Blink核心的浏览器已完全支持。
作者:21CTO社区
综合编译自:http://daniel.haxx.se/http2/
本文为 @ 21CTO 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。