请求之前的HTTP响应

m_v*_*eek 51 networking tcp comet http

我的问题可能听起来很愚蠢,但我只是想确定一下:

  • 是否可以在请求该资源之前发送HTTP响应?

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

服务器是否可以在HTML文件之后发送图像以节省时间?

我知道HTTP是一种同步协议,所以理论上它不应该工作,但我只是想让某人确认(或不是).

nha*_*nha 23

Jacques Mattheij最近发表的一篇文章引用了你的问题,声称尽管HTTP被设计为同步协议,但实现却并非如此.实际上,浏览器(他没有确切指定哪个)接受请求的答案尚未发送.

另一方面,如果你想要的东西不那么hacky,你可以看看:

  • 推送技术,允许服务器将内容发送到浏览器.取代长轮询/彗星"黑客"的现代实现是websockets.你可能也想看看socket.io.
  • 或者,您可能希望了解客户端路由.一些实现将它与缓存技术相结合(比如我相信在derby.js中).


Ray*_*ger 15

如果有人请求/index.html并且您发送了两个响应(一个用于/index.html,另一个用于/img.jpg),您如何知道收件人将获得两个响应并知道在第二个响应之前如何处理它们请求进去?

问题不在于发送.问题是接收器可能会获得意外数据.

另一个问题是你否认客户端能够使用If-Modified-Since和If-None-Match等HTTP缓存工具(即客户端可能不希望发送/img.jpg,因为它已经有了缓存复制).

也就是说,您可以使用Comet技术来估算服务器推送的好处.但这比简单地预测传入的HTTP请求要多得多.