首页 > web前端 > js教程 > 正文

HTTP/s HTTP/s HTTP3

王林
发布: 2024-09-06 16:31:05
原创
938 人浏览过

介绍

这是我最喜欢的主题之一,这将是一篇知识丰富的文章。所以请仔细阅读。

域分片

  • 域分片是一种用于提高网站速度和性能的技术。
  • 它涉及跨多个域分割或“分片”资源。
  • 当浏览器加载网站时,它会向网站服务器发出请求以下载不同类型的资源,如 HTML、CSS、JavaScript、图像等。
  • 但是,浏览器限制它们对单个域进行的并发连接(下载)数量。 (6,取决于浏览器)
  • 通过跨多个域分片资源(例如,从与脚本不同的域提供图像),您可以绕过此限制并同时下载更多资源,这可以加快页面加载时间。

复用

  • 允许通过单个连接同时发送多个请求和响应(默认大约 100)

注意:-

  • 但是,需要注意的是HTTP/2,最新版本的HTTP协议,支持多路复用

如何采用/更改当前协议

  • 要从 HTTP/1 切换到 HTTP/2,您需要将服务器配置为支持 HTTP/2。

  • 具体步骤取决于您使用的服务器软件。以下是一些常见服务器的一般步骤:

阿帕奇:

  • Apache 从 2.4.17 版本开始支持 HTTP/2。要启用它,您需要在 Apache 配置中包含 mod_http2 模块,然后将 Protocols h2 http/1.1 添加到您的配置中。

Nginx:

  • Nginx 从 1.9.5 版本开始支持 HTTP/2。要启用它,请在 Nginx 配置的监听指令中包含 http2,如下所示:listen 443 ssl http2。

Node.js:

-如果您使用 Node.js,则可以使用内置的 http2 模块来创建 HTTP/2 服务器。

注意:-

请记住,HTTP/2 在大多数浏览器中都需要 HTTPS,因此您还需要为您的服务器设置 SSL 证书。

从前端的角度来看我们做了什么?

  • 不,从 HTTP/1 到 HTTP/2 的切换是在服务器级别处理的,而不是在客户端或前端级别处理。
  • 但是,一旦您的服务器支持 HTTP/2,您可能需要重新考虑 HTTP/1 常见的某些性能优化技术,例如域分片或资产串联,因为它们对于 HTTP/2 可能是不必要的,甚至是有害的.

客户端和服务器如何连接

HTTP/1

  • HTTP/1 在每个请求/响应模型的单个连接上运行。这意味着对于从客户端到服务器的每个请求,都会建立一个单独的 TCP 连接。

  • 如果一个网页需要多种资源(如图像、CSS、JavaScript 文件),则需要建立多个 TCP 连接。

  • 这可能会导致称为“队头阻塞”的问题,其中资源的加载可能会被前一个资源的加载所阻止。

  • HTTP/1 不支持服务器推送,这意味着服务器只能发送客户端请求的资源。

HTTP/2

  • HTTP/2 引入了多路复用,它允许通过单个 TCP 连接同时发送多个请求和响应。这有效地消除了队头阻塞问题。

  • HTTP/2 还引入了服务器推送,服务器可以在客户端请求资源之前主动向客户端发送资源。这可以通过减少客户端和服务器之间的往返请求来提高性能。

  • HTTP/2 还支持标头压缩,这可以减少开销并提高性能,特别是对于移动用户。

HTTP/2 还支持标头压缩

  • HTTP/2 引入了一项名为 标头压缩 的新功能,它减少了 HTTP 标头的开销。

  • 在 HTTP/1 中,标头以纯文本形式发送,这可能会很大,并且会给每个请求和响应增加显着的开销。

  • 对于标头中包含 cookie 或令牌的请求尤其如此。

  • HTTP/2 使用一种名为 HPACK 压缩 的机制来压缩标头。

  • HPACK 是一种简单且安全的字符串压缩方案,可减少标头的大小,使 HTTP/2 请求和响应更快、更高效。

HPACK 压缩在内部工作

  • 它通过在客户端和服务器端维护先前发送的标头字段的列表,称为动态表

  • 当在后续请求或响应中重复标头字段时,不会发送整个标头字段,而是发送引用动态表中条目的索引。

  • 这显着减少了请求和响应标头的大小,特别是当许多标头在请求之间重复时。

HTTP/3

  • HTTP/3 是 HTTP 协议的下一个主要版本。它建立在 QUIC 之上,QUIC 是一种传输层协议由 Google 开发。

以下是 HTTP/3 相对于 HTTP/2 的一些优点:

提高速度:

  • HTTP/3 使用 QUIC,它的设计比 HTTP/1 和 HTTP/2 使用的传输协议 TCP 更快、更可靠。
  • QUIC 减少了连接建立时间,使与服务器的初始连接更快。

更好地处理数据包丢失:

  • 在 HTTP/2 中,丢失的数据包会减慢所有流(请求/响应)。 QUIC 通过独立处理流来解决这个问题,因此丢失的数据包只会影响单个流。

连接迁移:

  • QUIC 支持连接迁移,这意味着如果用户更改网络(例如从 Wi-Fi 切换到 4G),现有连接可以保持活动状态并迁移到新网络。

  • 这是与原始 IP 地址绑定的 TCP 不可能实现的。

默认加密:

  • QUIC 默认包含 TLS 1.3 加密。这使得协议更加安全,并减少了建立连接所需的往返次数。

服务器推送:

  • 与 HTTP/2 一样,HTTP/3 也支持服务器推送,服务器可以在客户端请求资源之前主动向客户端发送资源。

注意:-

需要注意的是,虽然 HTTP/3 有多个优点,但到目前为止它仍未得到广泛支持或使用。

HTTP/s HTTP/s HTTP3

HTTP/s HTTP/s HTTP3

参考:-

  1. https://frontendmasters.com/courses/realtime/
  2. https://developer.mozilla.org/en-US/docs/Web/HTTP
  3. https://developer.mozilla.org/en-US/docs/Glossary/HTTP_2
  4. https://developer.mozilla.org/en-US/docs/Glossary/HTTP_3

以上是HTTP/s HTTP/s HTTP3的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板