[译]探索 http2(第 1 部分):概述
原文链接:https://noobj.medium.com/exploring-http2-part-1-overview-dc3e9b53968f
让我们来谈谈 http2 的内容、原因、时间和方式
完整的代码可以在github上找到。
第 1 部分:概述 第 2 部分:使用 node-http2 核心和 hapijs 进行探索
什么是http2?
**http2*是自 1999 年以来使用的http1.1***之后的最新更新
http2协议注重性能;具体来说,最终用户感知的延迟、网络和服务器资源的使用情况。 (在此处阅读有关规格的信息*)*
为什么是http2?
换句话说http1.1有什么问题
加载网页是一项资源密集型工作,因为 HTTP/1.1 只允许每个 TCP 连接有一个未完成的请求。网络需要进行更新,以提高效率、安全性和速度。
http2如何解决性能问题?
http2 带来的改进:
- **单一连接:**仅使用一个与服务器的连接来加载网站,并且只要网站打开,该连接就保持打开状态。这减少了建立多个 TCP 连接所需的往返次数。(更多信息在这里)
- **多路复用:**同一连接上同时允许多个请求。以前,在 HTTP/1.1 中,每个传输都必须等待其他传输完成。(更多信息在这里)
- **服务器推送:**可以将其他资源发送到客户端以供将来使用。(更多信息在这里)
- **优先级:**请求被分配依赖级别,服务器可以使用它来更快地交付更高优先级的资源。(更多信息在这里)
- **二进制:**使 HTTP/2 更易于服务器解析、更紧凑且不易出错。将信息从文本转换为二进制不会浪费额外的时间。(更多信息在这里)
- 标头压缩: HTTP/2 使用HPACK压缩,从而减少开销。在 HTTP/1.1 中,每个请求中的许多标头都使用相同的值发送。(更多信息在这里)
我们什么时候可以开始使用http2?
现在!
这是时间线,
来源:https://www.polyglotdeveloper.com/
是的,从 1999 年到今天,我们(大多数)都在使用同样好的旧 http1.1; 15年!
如何开始使用http2?
以下是各种语言的 http2 库实现列表。
根据Can I Use的统计,大约 83% 的在线浏览器已经支持 http2
查看实际情况,http1.1 与 http2(网络节流:快速 3g)
http1.1(左)与http2(右);让我们在下一节中构建它
在下一部分中,我们将构建一个支持 http2 的简单服务器;具有http1.1向后兼容性;一步一步使用http2-node core 和hapi js。
第 1 部分:概述 第 2 部分:使用 node-http2 核心和 hapijs 进行探索
完整的代码可以在github上找到。