文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏
参与翻译: tangmisi (7), luke (1)

广义万维网工作在超文本传输协议Hypertext Transfer Protocol (HTTP)上。HTTP最初构思于1989年,最后一个重要的修订也在1999年获得批准了。在那些日子里,互联网和现在的样子完全不同。那时大部分网站都是基于文本的,图像、脚本和样式都非常少——视频就更罕见了。而今天,网站更具有互动性,带有图片、动画、样式、自定义字体等,但这是要付出一定代价的,例如一个页面很轻易就要请求超过100个不同的资源。

Amazon 1999 vs 2016

不断增加的资源请求和越来越大的页面大小导致了页面加载时间变慢,更进一步导致糟糕的用户体验。用户不喜欢等待,即使是几秒钟的延迟都可能导致用户离开你的网站到你的竞争对手的网站去。手机使用的爆发增长并没有使开发人员的工作变得轻松,因为连接到移动网络的设备往往是更慢的甚至更有带宽限制的。

开发人员结合和连接多个文件为单一文件,给常见的网页元素创建精灵表单(sprite sheets),推迟请求直到这个请求绝对地必要,和其他许多技术来减少请求的数量和加载web页面所需的带宽来进行反击。在给用户一个好的体验和快速地提供这个体验之间获取平衡变成了一种艺术。到头来,这些优化只能走这么远,改变底层技术是必需的。

第 1 段(可获 3.13 积分)

进入HTTP/2

HTTP/2 旨在解决HTTP/1.1的缺陷,以改进标准来满足现代应用程序的需求。HTTP 2标准化是特别的,它的概念已被证明能工作,于几年前进行了标准定稿。 SPDY, 一个主要由Google开发的网络协议,它实现的许多功能和优点都被 HTTP/2说采用了。 事实上,HTTP/2的第一版草案深受SPDY影响。

许多浏览器和服务器端都实现了SPDY,但由于它与HTTP/2 标准相似, Google 决定放弃SPDY 协议转而支持HTTP/2。 在Chrome 51中, SPDY 已经从Chrome浏览器中完全移除了。

第 2 段(可获 1.58 积分)

HTTP/2的好处

HTTP/2被设计用来服务现在的网络,但是仍然向后兼容HTTP/1.1。向后兼容性确保了支持这个协议的浏览器可以利用它的好处,而那些不支持的浏览器仍然可以正常运转而不影响用户工作流程。下面是HTTP/2提供的一些好处:

  • 头部(Header)压缩:HTTP头(Header )的大小被极大地缩减
  • 多路复用:一个连接上同时包括多个请求
  • HTTP/2服务器推送: 资源可以在请求前被服务器推送到客户端
  • 优先级:资源可以划分依赖等级,以允许服务器能够优先执行某些请求
  • 二进制:HTTP/2是一个二进制协议,传输数据能够更高效

HTTP/2在处理TLS连接时尤其有用。TLS握手会耗费很长时间,但由于延迟被减少和可以多路复用,其他的请求可以做它们的工作而不被阻塞。

第 3 段(可获 1.95 积分)

HTTP/2的性能

有两个公司是web性能的代名词,它们是CloudFlareAkamai。这两个公司都提供CDN和其他解决方案来提高网站的性能和可靠性,而且它们都支持HTTP/2。为了推广HTTP/2的采用,让我们看一下它们提供的能够展示HTTP/2的一些优点的demo。

CloudFlare的demo展示了从一个HTTP/1.1和一个HTTP/2服务器下载大量资源的差别。在我们的测试中,HTTP/2赢了,并且每次都比HTTP/1.1快2.5倍以上。

CloudFlare HTTP/2 Demo

Akamai的demo也呈现了相当类似的结果。

第 4 段(可获 1.34 积分)

Akamai HTTP/2 Demo

 

我想要展示的最后一个demo是由谷歌的Golang团队提供的。这个demo,再次下载了一群资源,但额外允许你给请求设置一个延迟来真正显示HTTP/2的优点。在没有任何延迟的情况下,HTTP/2和HTTP/1.1分别是569毫秒vs 3227毫秒。如果我们添加200毫秒的延迟,HTTP/2只花了839毫秒来加载网页,而HTTP/1.1需要花费9095毫秒,这个结果看起来就差距很大了。你可以点击这里自己查看这个demo。

Gopher HTTP/2 Demo

 

如果你对哪些网站在利用HTTP/2感到好奇,有很多可以查看的方式。Chrome插件HTTP/2和SPDY指示器(HTTP/2 and SPDY Indicator 是一种方式,如果网站启用了HTTP/2,它可以简单地提醒你。如果你不想安装插件,KeyCDN的HTTP/2 Test提供了一个网页,你可以在这个网页里面输入一个URL,查看这个域是否启用了HTTP/2。

第 5 段(可获 2.1 积分)

HTTP/2浏览器支持

为很多语言、服务器和浏览器实现的HTTP/2协议已经被部署了。像Chrome和Firefox这样的浏览器完全支持HTTP/2 协议。微软的Edge和苹果的Safari浏览器也支持HTTP/2,但只有在安全的连接下时。Chrome和Safari的移动版本也提供HTTP/2协议的支持。

可能你的用户可以利用这个协议,即使不使用,HTTP/2完全是向后兼容的,所以你不必担心。想要继续了解最新进展和得到最新的支持浏览器的信息,你可以查看我是否可以使用HTTP/2页面(Can I Use HTTP/2 page

第 6 段(可获 1.39 积分)

在你的栈(Stack)里面使用HTTP/2

说到你的技术栈(technology stack),不管你用的是IISApache、 NGINX,或任何这些技术,你都可以毫不费力地启用HTTP/2。由于HTTP/2协议是向后兼容的,你不需要对你的实际代码做任何的改变。自从Golang的1.6发布版,当浏览器支持的时候,标准的http库实际上默认使用HTTP/2。

HTTP/2的未来

HTTP/2在2015年被标准化,从那时起很多网站就开始使用这个协议了。虽然群众还没详细地理解到。推测HTTP在什么时候走向未来或者会走向什么样的未来还太早,但是在官方HTTP/2主页FAQs上,当被问到HTTP/3时,有回答说HTTP/3是有可能的。就目前而言,让我们着重于全面采用HTTP/2吧!

第 7 段(可获 1.89 积分)

HTTP/2在Auth0

在Auth0这里,我们努力提供一个优秀的用户体验。我们已经为我们的CDN和主要网站推出了HTTP/2支持。我们将在未来给我们更多的系统增加HTTP/2支持。

总结

HTTP/2对于HTTP协议来说是一个长期并且迟来的更新。这个新协议的有点在于多路复用、头部(header)压缩、二进制格式、服务器推送、资源优先级和向后兼容性。HTTP/2已经为当今的生产使用做好了准备,并且在大多数的技术栈里面是可用的。由于它是向后兼容的,在你的服务器上启用它相当地简单,如果你还没有启用它,今天就启用它吧!

第 8 段(可获 1.45 积分)

文章评论