HTTP 2.0 时代,你落伍了吗?

HTTP 2.0 时代,你落伍了吗?

提到 HTTP2.0 ,第一印象就是:这与 HTTP1.0 的区别是什么,有怎样的改进?

大的版本变化必然会有更强力的特性,那不妨拿来了解一下。

一、先了解 HTTP1.0 和 HTTP1.1

HTTP 2.0 时代,你落伍了吗?

我们先撇开 HTTP2 和 HTTP1 的区别,来说说 HTTP1.0 和 HTTP1.1 的区别,因为它俩本身就存在一些大的区别:

1.长连接;

HTTP 1.0 需要使用 keep-alive 参数来告知服务器端要建立一个长连接,而 HTTP1.1 默认支持长连接。

2.节约带宽

HTTP 1.1 支持只发送 header 信息(不带任何 body 信息),如果服务器认为客户端有权限请求服务器,则返回 100,否则返回 401。

客户端如果接受到 100,才开始把请求 body 发送到服务器。

3.HOST 域

现在可以 web server 例如 tomat,设置虚拟站点是非常常见的,也即是说,web server上的多个虚拟站点可以共享同一个 ip 和端口。

HTTP1.0 是没有 host 域的,HTTP1.1才支持这个参数。

二、HTTP2 新特性

HTTP 2.0 时代,你落伍了吗?

众所周知 ,在 HTTP1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞」,也就是我们常说的 Pending 状态。

提到 HTTP2 的新特性,有三个特性肯定是亮点:

1.多路复用:

多路复用允许同时通过单一的 HTTP2 连接发起多重的请求-响应消息先来看一张流程对比图。

HTTP 2.0 时代,你落伍了吗?

因此 HTTP2 可以很容易的去实现多流并行而不用依赖建立多个 TCP 连接,HTTP2 把 HTTP 协议通信的基本单位缩小为一个一个的帧。

这些帧对应着逻辑流中的消息,并行地在同一个 TCP 连接上。

这样来说的话,多路复用也为前端性能优化提供了更高效的方式。

2.首部数据压缩

HTTP1.1 不支持 header 数据的压缩,HTTP2.0 使用 HPACK 算法对 header 的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

HTTP1.1 并不支持 HTTP 首部压缩,为此 SPDY 和 HTTP/2 应运而生, SPDY 使用的是通用的 DEFLATE 算法,而 HTTP2 则使用了专门为首部压缩而设计的

3.服务器推送

当我们对支持 HTTP2.0 的 web server 请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。

这种方式非常合适加载静态资源。

引用 HTTP/2.0 相比 1.0 有哪些重大改进 中的描述:

服务端推送是一种在客户端请求之前发送数据的机制。在 HTTP/2 中,服务器可以对客户端的一个请求发送多个响应。Server Push 让 HTTP1.x 时代使用内嵌资源的优化手段变得没有意义;

如果一个请求是由你的主页发起的,服务器很可能会响应主页内容、logo 以及样式表,因为它知道客户端会用到这些东西。

这相当于在一个 HTML 文档内集合了所有的资源。

不过与之相比,服务器推送还有一个很大的优势:可以缓存!也让在遵循同源的情况下,不同页面之间可以共享缓存资源成为可能。

三、关于 HTTP2 性能

HTTP 2.0 时代,你落伍了吗?

说的天花乱坠,HTTP2 不但能多路复用,而且还可以压缩头部数据,以及做一些服务器端推送。

那么,HTTP2 真正的性能到底如何呢?我们来看看深入研究:

https://segmentfault.com/a/1190000007219256

文章做了一些验证试验,这里就不赘述了,我们来看一下试验结果,有一个感性认识。

通过上述一系列的实验,我们可以知道 HTTP2 的性能优势集中体现在“多路复用”和“服务端推送”上。

1.对于请求数目较少(约小于30个)的情况下,HTTP1 和 HTTP2 的性能差异不大,在请求数目较多且延迟大于 30ms 的情况下,才能体现 HTTP2 的性能优势。

2.对于网络状况较差的环境,HTTP2 的性能也高于 HTTP1。

3.与此同时,如果把静态资源都通过服务端推送的方式来处理,加载速度会得到更加巨大的提升。

4.在实际的应用中,由于 HTTP2 多路复用的优势,前端应用团队

无须采取把多个文件合并成一个,生成雪碧图之类的方法减少网络请求。

除此之外,HTTP2 对于前端开发的影响并不大。

四、效果演示

对于网络状况较差的环境,HTTP2 的性能也高于 HTTP1。我们可以看看下面这个动图:

HTTP 2.0 时代,你落伍了吗?

可以看出 HTTP1.1 和 HTTP2 在比较接近的服务器延迟

条件下,HTTP2 的加载速度明显要优于 HTTP1。

1.

2.

3.

HTTP 2.0 时代,你落伍了吗?


分享到:


相關文章: