内容简介:本章作为一个收尾,我来谈一些自己对HTTP/2的理解,以及HTTP/2的应用前景展望。PS:丰富的一线技术、多元化的表现形式,尽在“通过前边四章,我们了解了HTTP/2的特性,以及如何在Go中利用HTTP/2的相关特性进行一些开发工作。本章作为一个收尾,我来谈一些自己对HTTP/2的理解,以及HTTP/2的应用前景展望,个人观点,不一定对,欢迎大家留言讨论。
女主宣言
本章作为一个收尾,我来谈一些自己对HTTP/2的理解,以及HTTP/2的应用前景展望。 本文来自公众号“ 360搜索技术团队 ”的投稿,作者付坤。
PS:丰富的一线技术、多元化的表现形式,尽在“ 3 60云计算 ”,点关注哦!
通过前边四章,我们了解了HTTP/2的特性,以及如何在 Go 中利用HTTP/2的相关特性进行一些开发工作。本章作为一个收尾,我来谈一些自己对HTTP/2的理解,以及HTTP/2的应用前景展望,个人观点,不一定对,欢迎大家留言讨论。
先回顾下:
HTTP/2 新特性
-
二进制分帧(HTTP Frames)
-
多路复用
-
头部压缩
-
服务端推送(server push)
HTTP/2通过多种多种技术手段(如:多路复用,头部压缩,优先级等),极大的优化了HTTP的C/S双端的数据交互体验,解决很多以往HTTP/1.1协议本身不能解决的问题 。
HTTP/2 的优势
-
低延迟的内容传输(多路复用,优化RTT)
-
带宽占用减小(头部压缩,编码,HPACK)
-
连接数减少(多路复用,二进制分帧)
先来看下带宽和延迟对页面加载的影响,数据来源:HTTP/2 is here, let's optimize! - Velocity SC 2015
-
在5M以下的带宽内,对页面加载速度影响较大,5M以上的带宽,对页面加载速度影响较小。
-
延迟的减少对页面加载时间的提升呈线性增长
目前国内及一些发达国家,家庭带宽普遍也能达到5M以上了,所以HTTP/2即使减小了带宽占用,对我们WEB业务来说,提升也非常有限,收益不可观。但如果换一个角度来说,HTTP/2减小了带宽占用,那么对国内的网络基础设施,甚至是跨洋光纤来说,要求都会降低,也相当于变相提升了网络基础设置的品质。对那些像CDN这种靠带宽来收费的场景来说,减小带宽也会减小成本(特定场景,不一定所有的CDN场景都能减小带宽占用)。
RTT的优化导致延迟的减少,应该能极大程度上提升一些用户体验,这点看起来收益应该会比较明显,可事实又会怎样呢?程序猿们的智慧不可小觑,在HTTP/1.1阶段虽然不能通过多路复用来减少RTT,但是我们可以用连接并发啊。页面内的资源链接放到不同的域名下,单个域名连接数有限制就用泛域名分散-Domain sharding下。如果是icon这种小图标,资源太多又导致页面内链接太多,那就用雪碧图-CSS Sprites啊。所以,经过这么一折腾,HTTP/2减少RTT的优势也不存在了。
最后一点就是连接数的减少,这个是有绝对的优势了,之前HTTP/1.1甚至都通过增加连接数来优化页面性能。但这点优势也无非就是减少一些服务端的压力,对用户体验没有什么提升。对于不差钱的互联网公司门来说,减小的那一点压力还不至于去大动干戈。
HTTP/2的 Server Push
功能,看起来能加速资源的获取速度,可是在目前的互联网环境下,大家都是把静态资源放到独立的域名,利用CDN进行加速,不会占用自己的服务带宽;CDN拥有更多的服务节点,比服务本身能提供更好的接入和访问效果,所以目前看起来 Server Push
也没有很好的用武之地。即使要使用 Server Push
,服务端也要关注客户端的Cache,避免重复推送,浪费带宽,这点也还没有很好的服务端生态来解决。
另一个是关于HTTP/2服务的七层反向代理,当我们希望在一些网关对业务进行一些基础逻辑的处理时,需要使用这个。但由于HTTP/2引入了Stream States,这个流程略显复杂,相当于针对客户端和服务端要维护两套不相同的状态,使得这个七层代理的实现也有一些难度。Nginx官方也暂时不计划在Proxy Module中支持 upstream 的 HTTP/2,因为他们认为HTTP/2在性能的提升上,对 proxy 上的使用没有收益,甚至可能有反作用; 而且实现该功能,需要重写 upstream 模块,没有收益 + 工作体量大,就更没有必要去做了。 nghttp2
应该是当前最完善的HTTP/2相关的组件了,但是其实现的代理 nghttpx
对HTTP/2代理也只实现了部分功能,无法代理实现 Server Push
。
下图是通过配置了 nghttpx
的http2-proxy后,通过我们前边的GO代码实例,访问 /push
,返回的不支持 Server Push
:
最后做个总结,我个人的意见是:HTTP/2有优势,但其优势对现在通过应用层优化后的HTTP/1.x来说,优势没有那么大,并且,如果要发挥HTTP/2的优势,就必须将之前在HTTP/1.x阶段做的很多事情进行"回退",这种吃力并且讨不到什么好处的事情,大家没有动力去做。所以,可以预见的是,短时间内,HTTP/2还是不会得到大范围的应用。但是随着国外一些互联网巨头们的带动,提供越来越多的可以便捷的使用HTTP/2的生态工具,HTTP/2终究还是会发展起来的,毕竟它的优势还是存在的。
当前时间: 2018年08月25日21:36:22
,给BAT三家的首页截了个图,可以看到,都还是HTTP/1.1,并没有启用HTTP/2.(但起码都是HTTPS了>_>)
参考资料
最后放一部分HTTP/2相关的参考资料,供感兴趣的同学研究(页面内很多资源都提供了链接,如果需要请阅读原文查看):
-
RFC7540
-
RFC7540-ui美化版
-
http2讲解 gitbook 中文版
-
HTTP/2 Frequently Asked Questions
-
http2相关tools
-
stream状态机(重要)
-
A fork of /x/net/http2 providing Server Push for Go
-
http2 server push overview video
-
High Performance Browser Networking | O'Reilly
-
HTTP/2 is here, let’s optimize!
360云计算
由360云平台团队打造的技术分享公众号,内容涉及 数据库、大数据、微服务、容器、AIOps、IoT 等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript忍者秘籍
John Resig、Bear Bibeault / 徐涛 / 人民邮电出版社 / 2015-10 / 69.00
JavaScript语言非常重要,相关的技术图书也很多,但没有任何一本书对JavaScript语言的重要部分(函数、闭包和原型)进行深入、全面的介绍,也没有任何一本书讲述跨浏览器代码的编写。本书是jQuery库创始人编写的一本深入剖析JavaScript语言的书。 本书共分四个部分,从准入训练、见习训练、忍者训练和火影训练四个层次讲述了逐步成为JavaScript高手的全过程。全书从高级We......一起来看看 《JavaScript忍者秘籍》 这本书的介绍吧!