请求之前HTTP响应(HTTP Response before Request)

2019-07-31 09:41发布

我的问题听起来很蠢,但我只是想确认:

  • 是否有可能发送具有该资源的请求之前HTTP响应?

例如说你有一个HTML页面index.html ,只显示一个名为图片img.jpg 。 现在,如果你的服务器知道访问者将请求HTML文件,然后将JPG图片每次:

有没有可能让服务器只包含HTML文件后的图像发送到节省时间?

我知道,HTTP是一个同步协议,所以理论上它不应该工作,但我只是想有人来确认(或没有)。

Answer 1:

如果有人请求/index.html和发送两个响应(一个用于/index.html,另一个用于/img.jpg),你怎么知道收件人将收到两个响应,并知道该怎么前一秒与他们无关要求进去?

这个问题是不是真的与发送。 问题是与接收器可能出现了意外的数据。

另外一个问题是,你拒绝的客户端使用HTTP缓存工具的能力等的If-Modified-Since和If-无 - 匹配(即客户可能不希望被发送/img.jpg,因为它已经有一个缓存复制)。

这就是说,你可以通过使用近似的服务器推送的好处彗星的技术。 但是,这不是简单的预期传入的HTTP请求更多地参与。



Answer 2:

最近的一个岗位由Jacques Mattheij ,引用您很的问题,声称尽管HTTP被设计成一个同步协议, 落实没有。 在实践中,浏览器(他没有指明到底是哪)接受答案的请求尚未被发送。

在另一方面,如果你正在寻找的东西少哈克,你可以看看:

  • 推技术,使服务器将内容发送到浏览器。 现代化的实现,取代长轮询/彗星“黑客”是的WebSockets 。 你可能想看看socket.io也。
  • 或者你可能想看看客户端的路由 。 某些实现这个结合与缓存技术(如在derby.js我相信)。


Answer 3:

您可以通过有效缓存资源,即设置获得更好的结果, 适当的缓存头和配置你的Web服务器的高速缓存。 您也可以内嵌使用base 64编码的图像 ,如果这是一个特殊的关注。

您还可以看看长轮询的 JavaScript的解决方案。



Answer 4:

你要找的服务器推送 :这是不是在HTTP上获得。 像SPDY协议有它,但你的运气了,如果你限制为HTTP。



Answer 5:

我不认为这是可能在同一个HTTP响应混合.html和图像。 另外,发送图像数据“立即”,在第一次请求之后 - 有一种“静态资源”,这可能是帮助一个概念(但要求客户端创建一个新传请求特定资源)。

有几个在所提到的有趣的事情的文章 。



Answer 6:

不,这是不可能的。

请求的第一行持有被请求的资源,所以你不知道做什么用,除非你检查字节的要求(至少一条线的价值)首先响应。



Answer 7:

号HTTP定义为请求/响应协议。 一个要求:一个响应。 还有什么不是HTTP,这是别的东西,你必须正确地指定它,并在两端完全实现它。



文章来源: HTTP Response before Request