这是我最喜欢的主题之一,这将是一篇知识丰富的文章。所以请仔细阅读。
域分片
复用
注意:-
如何采用/更改当前协议
要从 HTTP/1 切换到 HTTP/2,您需要将服务器配置为支持 HTTP/2。
具体步骤取决于您使用的服务器软件。以下是一些常见服务器的一般步骤:
阿帕奇:
Nginx:
Node.js:
-如果您使用 Node.js,则可以使用内置的 http2 模块来创建 HTTP/2 服务器。
注意:-
请记住,HTTP/2 在大多数浏览器中都需要 HTTPS,因此您还需要为您的服务器设置 SSL 证书。
从前端的角度来看我们做了什么?
客户端和服务器如何连接
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/2 的一些优点:
提高速度:
更好地处理数据包丢失:
连接迁移:
QUIC 支持连接迁移,这意味着如果用户更改网络(例如从 Wi-Fi 切换到 4G),现有连接可以保持活动状态并迁移到新网络。
这是与原始 IP 地址绑定的 TCP 不可能实现的。
默认加密:
服务器推送:
注意:-
需要注意的是,虽然 HTTP/3 有多个优点,但到目前为止它仍未得到广泛支持或使用。
参考:-
以上是HTTP/s HTTP/s HTTP3的详细内容。更多信息请关注PHP中文网其他相关文章!