http2解决了哪些问题_http2的特性

boyanx3小时前技术教程1

HTTP/2(最初称为 SPDY)是 HTTP 协议的第二个主要版本,它在 HTTP/1.1 的基础上进行了重大改进,旨在解决其在性能和效率方面的诸多瓶颈。以下是 HTTP/2 主要解决的问题:

队头阻塞(Head-of-Line Blocking)问题

  • HTTP/1.1 的问题:在 HTTP/1.1 中,虽然可以建立多个 TCP 连接来并行请求资源,但每个连接内部的请求是串行处理的。如果一个请求的响应很慢,它会阻塞后续请求的响应(尤其是在使用 keep-alive 时),造成“队头阻塞”。
  • HTTP/2 的解决方案:引入了多路复用(Multiplexing)。所有请求和响应都在同一个 TCP 连接上通过流(Stream)消息(Message)帧(Frame) 的分层结构并行传输。每个流都有唯一的 ID,帧可以交错发送并重新组装,从而彻底解决了应用层(HTTP层)连接内部的队头阻塞问题。

减少延迟和提升页面加载速度

  • HTTP/1.1 的问题:为了克服串行请求的限制,浏览器通常会为一个站点建立 6-8 个并发 TCP 连接。这不仅增加了建立连接的开销(TCP 握手、TLS 握手),还可能导致网络拥塞。
  • HTTP/2 的解决方案:通过多路复用,一个 TCP 连接就足以处理所有资源的并行请求和响应。这大大减少了连接建立的开销和延迟,提高了网络资源的利用率,从而显著提升了页面加载速度。

头部信息冗余和传输开销大

  • HTTP/1.1 的问题:HTTP 头部信息(如 Cookie、User-Agent 等)通常很大且重复,每次请求都必须完整发送,占用了大量带宽,尤其在移动端或高延迟网络中影响明显。
  • HTTP/2 的解决方案:采用了HPACK 压缩算法对 HTTP 头部进行压缩。客户端和服务器都维护一个头部字段的索引表,只传输索引和增量信息,极大地减少了头部传输的数据量。

服务器被动响应,无法主动推送资源

  • HTTP/1.1 的问题:服务器只能被动地响应客户端的请求。如果客户端请求一个 HTML 页面,服务器返回后,客户端需要再次请求其中的 CSS、JavaScript、图片等资源,增加了往返次数(RTT)。
  • HTTP/2 的解决方案:引入了服务器推送(Server Push) 功能。服务器可以在客户端请求一个资源时,主动将它预测客户端接下来会需要的资源(如 HTML 页面依赖的 CSS 和 JS 文件)一并推送给客户端,减少了客户端发现和请求这些资源的延迟。

请求效率低下

  • HTTP/1.1 的问题:请求必须等待响应才能发出下一个(在单个连接上),或者需要复杂的连接管理来实现并发。
  • HTTP/2 的解决方案:除了多路复用带来的并行性,HTTP/2 还允许客户端发送优先级(Priority) 信息,告知服务器哪些资源更重要,需要优先处理和传输,从而更智能地分配带宽。

总结来说,HTTP/2 的核心改进在于:

  • 多路复用:解决队头阻塞,实现真正的并行。
  • 二进制分帧层:将消息分解为更小的帧,支持多路复用和优先级。
  • 头部压缩(HPACK):减少不必要的数据传输。
  • 服务器推送:允许服务器主动发送资源。
  • 请求优先级:优化资源传输顺序。
标签: js 上传图片

相关文章

网站七牛 CDN 流量被刷,差点破产

昨天突然收到七牛云的余额不足提醒邮件,大意是我的账号余额不足以继续使用 7 天。我以为是七牛云发送邮件的 bug,因为我月初刚充值,充了大概一年的费用。谨慎起见,还是登录了后台查看。 X,实时消费...

图片里的表格,如何快速导入 Excel 表格?3 个方法,不用手动敲字!

职场人是不是都遇到过这种无奈:拿到的表格是图片格式,没法复制只能手动敲字,又慢又容易错?财务小刘上周收到合作方发来的 “月度对账表”,是张截图,里面 300 多条交易记录,她对着图片 “看一个数字、敲...

8Mbps、100Mbps和 1Gbps 的上传/下载速度比较如何?

要理解8Mbps、100Mbps和1Gbps的差异,首先得弄清楚这些单位代表什么。Mbps是“Megabits per second”(兆比特每秒),而Gbps是“Gigabits per secon...

UCIe 3.0规范发布:数据传输速率翻倍至64 GT/s,可管理性更强

IT之家 8 月 6 日消息,全球开放小芯片互连标准组织 UCIe 联盟今日正式推出 UCIe 3.0 规范,最大实现 64 GT/s 数据速率,较上一代 32 GT/s 带宽翻倍。IT之家从官方获悉...

前端三大件详解:HTML、CSS、JavaScript,构建Web的基石

作为Web开发的核心基础,前端三大件(HTML、CSS、JavaScript) 是每个开发者必须掌握的技术。它们分别负责网页的 结构、样式 和 交互,共同构建了现代Web应用。1 HTML(超文本标记...

显示接口技术深度解析:从协议层到物理传输层 —— LVDS、DSI、HDMI

大家好,我是皮哥!你有没有想过,手机屏幕是怎么显示出图像的?电视是如何接收到高清信号的?工业控制屏又是如何与系统通信的?答案就藏在各种显示接口技术中!常见的显示接口,比如 LVDS、DSI(MIPI...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。