大兴网站建设:移至HTTP / 2之在线上实现高速连接性能

2019.08.17 mf_web

83

该超文本传输协议(HTTP)是用于管理不同类型的文件,如文本,图像,音乐,视频和万维网使用其他多媒体文件的传输系统的规则。它解释了如何在服务器和浏览器之间格式化和传输文件。

像HTTP这样的Internet协议是协议的集合,它充当执行各种功能的应用层,例如在浏览器中获取URL,该URL向控制所请求网页传输的Web服务器发送HTTP命令。应用程序层位于许多“其他”层之上,这些层是处理核心网络功能的抽象。

HTTP被认为是无状态协议,因为它在不事先了解其命令的情况下独立执行其命令。HTTP目前正在许多新技术中使用,包括JavaScript,ActiveX和Java。

HTTP / 1.1:全部开始的地方

HTTP是由互联网工程任务组(IETF)和World Wide Consortium在1999年开发的,导致出版了一系列评论请求(RFC),其第一个版本为HTTP / 0.9之前的HTTP / 1.1,这是一个用于在信息标准中引导Web的单行协议。

HTTP / 1.1存在了好几年,但它的年龄已经开始出现。加载网页比以往更加密集,因为HTTP实际上每个TCP连接只能启用一个请求。作为一种可用于许多任务的通用无状态协议,过去的浏览器使用多个TCP连接来发出并行请求。但是,TCP拥塞控制被有效地驳斥,导致拥塞事件损害性能和网络。

大量请求“在线上”发送了大量重复数据。这意味着HTTP / 1.1请求有很多与之相关的开销,并且在获取大量资源以加载现代网站时无法正常运行伤害表现。

这促使业界找到通过精神,数据内联和域共享来破解网络的方法,这些方式是协议本身的基本问题的指示,并且在使用时导致连接中存在大量问题。

人们“开发一个网站”并不关心HTTP,除了感谢它存在,但从Web开发人员的角度理解这一点很重要。

谷歌的SPDY

SPDY(发音为speedy)是一种开放式网络实验协议,由Google于2009年中期发布,其主要目标是通过解决一些众所周知的性能限制来减少网页加载延迟并提高网络安全性。 HTTP / 1.1。

Google SPDY的一些具体目标是:

  • 通过避免网络安排的变化来降低部署复杂性

  • 将页面加载时间(PLT)减少50%,从而更有效地使用底层TCP连接

  • 网站作者无需对内容进行任何更改

  • 保持协议与开源社区合作

  • 收集并验证实验协议数据效率

在最初宣布之后,谷歌的软件工程师分享了实验协议的结果,该协议得到了积极的反馈,性能页面的改进速度提高了55%。

2012年,实验协议在Chrome,Firefox和Opera中启动,越来越多的网站开始在其组织内部署SPDY。借助这一技术,HTTP工作组(HTTP-WG)推动了一种新的技术趋势,即从SPDY中获取协议系统,开发和增强它们,并提供官方的“HTTP / 2”标准。这是SPDY和HTTP / 2并行继续成熟的时间点。

快进到2015年互联网工程指导小组(IESG)审核并接受新的HTTP / 2标准发布。在获得批准后,谷歌Chrome团队宣布了他们的计划,即弃用针对TLS的SPDY和NPN扩展。

从那里开始,HTTP / 2标准已经成为最好和最广泛测试的标准之一,并且已经完成了大量经过测试和生产就绪的客户端和服务器执行。

向HTTP / 2问好

HTTP / 2成为人们关注的焦点。作为标准和批准的“ 在线 ”协议,所有流行的浏览器都承诺支持它,或已经为其用户支持它,并且许多流行的网站,如谷歌,Facebook和Twitter已经利用HTTP / 2到提供更好的性能。在很短的时间内,一些HTTP / 2和HPACK标准在2015年初获得批准,它们在网络上的使用已经超过了SPDY。

HTTP / 2

HTTP / 2不会在任何方法中改变HTTP的应用程序语义。HTTP方法,状态代码和标题字段等核心概念保持不变。但是,通过让用户撤消一些HTTP / 1.1,HTTP / 2将通过其不寻常的组合使应用程序更加健壮。

HTTP / 2涉及增加旧协议版本的数量,他们通过替换预期用户需要的请求 - 响应模型来做到这一点,在不同的请求中发出请求之前将其发送给他们 - 响应通道或也称为多路复用。因此,它发送速度要快得多,因为它不仅会回复对请求的响应,还会回复您尚未提出但尚未完成的请求。

HTTP / 2不是HTTP / 1.2?

新HTTP的规范描述了超文本传输协议语义的优化表达,称为HTTP版本2(HTTP / 2)而不是HTTP / 1.2。这是因为HTTP / 2提供了一个新的二进制框架层,它与版本HTTP / 1.1服务器和客户端不是回归兼容的。尽管旧版本可能存在一些相似之处,但在使用原始TCP套接字之前,您不会真正理解这些差异。

HTTP / 2功能

那么,HTTP / 2中的新功能,以及为什么或如何帮助您和您的应用程序或网站?

让我们来看看它可以使用的新协议,它的功能和新功能,以进一步增强应用程序。

新的二进制框架层

HTTP / 2使用新的二进制成帧层,该层与HTTP / 1.1版本不是回归兼容,后者决定了如何在客户端和服务器之间格式化和传输HTTP消息。这是套接字和更高HTTP API之间新的更新加密机制。

如上所述,HTTP / 1.1对多个并行请求使用多个TCP连接以提高连接速度。但是,HTTP / 1.1请求有很多与之相关的过多数据,并且在获取大量损害性能的资源时无法正常运行。

新的二进制成帧层取消了这些限制,并允许完整的请求和响应多路复用,使客户端和服务器能够将HTTP消息拆分为不同的帧。这提高了连接速度和Web上数据的加载速度。

流优先级

流优先级使用户能够通过允许用户优先排序来自多个流的多个流的顺序来更好地控制内容的回放。HTTP / 2允许每个流具有相关的权重和依赖性。因此,服务器可以使用此数据通过管理内存分配来确定流处理的优先级,一旦响应数据可用,它将提供正确的带宽,以保证向客户端最佳地传递高优先级响应。

每个连接一个连接

使用新的二进制成帧层,HTTP / 2不使用多个TCP连接来复用bin并行。这意味着每个流被分成许多帧,可以按时排序,每个源只需要一个连接。这在连接速度和性能方面提供了很多优势。

标题压缩

标头定义了通过万维网传输的资源类型,HTTP / 1.1通过纯文本以合理的字节数或千字节数发送,从而导致数据开销。HTTP / 2使用HPACK压缩格式在每个方向上使用单个GZIP上下文来减少请求和响应头元数据。但是,由于对应用程序的重大攻击,这在一段时间后被删除。试图找到更好的解决方案HTTP / 2开发一种新的,特定于头的压缩方案,这是一种安全且有效的压缩方法。

服务器推送

HTTP / 2的最佳新功能之一是从服务器发送针对单个客户端请求的多个响应的功能。这意味着服务器可以将额外的资源推送到客户端,而无需强制客户端请求每个资源。通过让服务器向前推送相关资源,可以减少额外的延迟。

HTTP / 1.1和HTTP / 2之间的区别

两个版本的HTTP之间存在一些主要的显着差异。这可能暂时不明显,但是一旦用户使用原始TCP套接字,那么令人难以置信的差异将是显而易见的,特别是在性能方面。

以下是两个版本之间的一些明显差异。

  • HTTP / 2保留了HTTP 1.1的大部分高级语法

  • HTTP / 2是二进制的,而不是文本的

  • HTTP / 2是完全多路复用的,而不是有序和阻塞的

  • HTTP / 2允许服务器将响应“ 推送 ”到客户端缓存中

  • HTTP / 2使用标头压缩来减少开销

  • HTTP / 2可以为每个源使用一个连接以实现并行性

HTTP / 2更好

HTTP / 2的主要目标是通过启用完整请求和响应多路复用来减少延迟,它实际上达到了目标,因为它加载网页的速度更快。

HTTP / 2更好

这是Akamai团队创建的实时发布的演示,它显示了构成Akamai Spinning Globe的许多小瓷砖下载的影响。正如您可以看到的旧版HTTP,延迟为271毫秒,加载时间为20.80秒。而HTTP / 2的延迟为0毫秒,加载时间为6.67秒。多棒啊!

测试HTTP升级以切换到HTTP / 2

使用HTTP升级,您可以与非加密网络建立HTTP / 2连接,但可能依赖于浏览器。如果服务器不支持HTTP / 2,则它可以使用HTTP / 1.1响应进行切换。要启用此功能,客户端必须使用HTTP Upgrade来处理协议。请记住,这可能有效,但连接可能会失败,客户端可能会回退到TLS隧道。

下面考虑到这些标准的HTTP请求:
GET /页HTTP / 1.1 
主机:example.com:8000 
连接:升级,HTTP2-设置
升级:H2C 
HTTP2-设置:(设定载荷)
HTTP / 1.1 200 OK 
内容长度:250 
的Content type:text / html 
(... HTTP / 1.1 response ...)
(或)
HTTP / 1.1 101交换协议
连接:升级
升级:h2c 
(... HTTP / 2响应...)

切换到HTTP / 2

尽管HTTP / 2确实很有前途,许多公司可能已经在不知不觉中使用它,但它并没有确切的开始日期,并且不可能在瞬间完成。这意味着HTTP / 1.1仍将使用多年。有数百万台服务器必须要小心,切换到新的二进制框架还将包括更新每个网络,库和浏览器,这可能需要花费金钱和时间。

根据维基百科的HTTP / 2开发里程碑,IESG于2015年2月17日提交了HTTP / 2批准发布为Proposed Standard,并于2015年5月14日发布了HTTP / 2作为RFC 7540,但没有关于该标准的正式发布交换。

HTTP / 2开发

我们现在所知道的是,HTTP / 2适用于所有现代浏览器,并且他们已经承诺在支持HTTP / 1.1的同时支持它,同时对大量现有用户进行最少的仲裁。

大兴网站建设

寒枫总监

来电咨询

18868949445

微信咨询

寒枫总监

TOP