当前位置: 首页 > 知识库问答 >
问题:

HTTP 2将支持服务器推送,这意味着什么?

柳项明
2023-03-14

我已经读了很多关于HTTP 2(仍在开发中)的东西,所以我也听说了服务器推送功能,但我想,这还不清楚。

此服务器推送功能是否意味着服务器将能够向客户端发送响应,而无需后者发出请求?就像普通的TCP连接一样?还是我没抓住重点?

共有2个答案

卢晟
2023-03-14

本质上你的理解是正确的,然而,还有很多。

只有在发出HTTP页面请求并确定该页面正确呈现所需的资源(即图像、JavaScript文件、CSS等)后,服务器才能向客户端发送资源。负责这一点的机制是服务器端框架。在Java中,这将是Servlet 4,可能还有JSF。

服务器不能在自己喜欢的时候向客户端发送任何资源。只有在上述情况下才会发生这种情况,并且客户机始终能够拒绝服务器请求以推送资源。

HTTP/2服务器推送的机制设计得非常好,为了解决这个问题,我推荐这篇关于HTTP/2的概述,以及这篇深入探讨HTTP/2协议内部的文章。

秦彦君
2023-03-14

HTTP2推送机制不是像websocket或服务器发送事件那样的通用服务器推送机制。

它专为HTTP对话的特定优化而设计。具体来说,当客户端请求资源(例如index.html)时,服务器可以猜测它接下来要请求一堆关联资源(例如theme.css、jquery.js、logo.png等)。通常一个网页可以有10s这样的关联请求。

使用HTTP/1.1,服务器必须等到客户端实际发送对这些关联资源的请求,然后客户端受到连接的限制,一次只能请求大约6个。因此,在实际发送网页所需的所有关联资源之前,可能需要多次往返。

使用HTTP/2,服务器可以在对index.htmlGET推送的响应中发送promise,告诉客户端它还将发送theme.css、jquery.js、logo.png等,就好像客户端已经请求了它们一样。然后,客户端可以取消这些推送或只是等待它们被发送,而不会产生多次往返的额外延迟。

下面是一个使用Jetty的SPDY(HTTP2的基础)推送的演示https://www.youtube.com/watch?v=4Ai_rrhM8gA以下是一个关于jetty中HTTP2和SPDY推送API的博客:https://webtide.com/http2-push-with-experimental-servlet-api/

 类似资料:
  • 我想创建一个

  • 服务器推送的工作原理是在响应请求后立即发送js、css、图像等,而不是等待客户端接收html、解析它并请求资源,从而节省往返。但是,将js、css、图像、字体等推送给,而这些相同的文件在一分钟前获取时已经被客户端下载,这完全是对带宽的浪费,因为客户端已经拥有这些文件。 为每个请求保留状态服务器端似乎很昂贵,而且不可能这样做,因为HTTP是无状态的。大概,客户端会在后续访问中重新请求html,以查看

  • HTTP/2如何影响代理服务器的实现?特别是,例如,当客户端向仅支持HTTP/1的内容服务器发送HTTP/2请求时。x、 代理服务器是否应该将HTTP/2请求转换为HTTP/1。是否在将客户端请求定向到content server之前执行x请求?当从content server接收到响应时,代理服务器是否应该在将响应发送回客户端之前将其转换为HTTP/2格式?

  • 本文向大家介绍微服务的端到端测试意味着什么?相关面试题,主要包含被问及微服务的端到端测试意味着什么?时的应答技巧和注意事项,需要的朋友参考一下 端到端测试 验证工作流中的所有流程,以检查一切是否按预期工作。它还确保系统以统一的方式工作,从而满足业务需求。

  • 在我的项目中,我创建了一个名为的新分支,并希望将该分支推送到服务器,但它似乎一直在推主分支。 github: 两个GitHub分支:Master和Dev 在服务器上: 我有一个生产网站:例如。com 我的工作流程: 我在本地工作,然后推送到GitHub Dev 这就是我想做的。 我目前被困在将Dev分支推送到Staging服务器:dev.example.com 这是我的本地git配置文件: 在我的