HTTP非持久连接模式有什么用处?

8
这似乎是一个微不足道的问题,但我还是困惑了。
几乎在每个网站上我都读到HTTP持久连接或长连接比非持久连接更好。 问:那么为什么非持久连接还存在?
有人说,如果服务器为多个客户端提供服务,则持久连接会有缺点,因为用户被剥夺了连接。问:所有流行的网站都为数百万客户端提供服务,这是否意味着他们不使用持久模式?
据我所知,搜索引擎可能不使用持久连接。
请有人解释一下这个话题。
我还有另一个疑问与HTTP请求有关。我已经读过,如果一个页面包含指向多个对象的链接,那么web浏览器将进行许多请求以获取所有这些内容(这就是为什么要使用持久连接)。我的疑问是为什么不将所有对象嵌入页面并作为一个对象发送?如果理由是它使页面变得沉重且不友好,那么无论如何浏览器都会打开并行连接来获取多个对象,这会再次对网络造成相同的负载。
好的,我明白这不能用于像图像搜索之类的东西,但如果页面包含少量对象,则可以将它们嵌入页面并发送。
这些问题可能看起来很愚蠢,但我无法解决。 我有一个疑问,我需要澄清一下,并且您可以帮助。谢谢。
2个回答

6

HTTP规范原版始终使用非持久连接;因为在HTTP/1.0编写时,嵌入了大量外部对象的网页很少,所以HTTP/1.1增加了持久性,使其更有效率。

然而,即使HTTP/1.1允许持久连接,仍有一些实现不支持它们,或者仅支持HTTP/1.0。因此,HTTP/1.1要求发送Connection: keep-alive头来启用此功能,并发送Connection: close以禁用它。

可以通过对数据进行base64编码并将其包含在data: URL中,直接在HTML中包含媒体。通常不这样做是因为它会减慢您的Web浏览器速度。对于标准的HTML页面,浏览器可以开始渲染页面的结构,而无需等待(相当大的)内联data:链接下载。


我知道默认情况下HTTP 1.1是持久的,而且Web服务器响应时间很短。但是,这仍然没有回答我的问题。 - user3275095
@user3275095 我想我至少回答了你几个问题。你指的是哪一个? - Andrew Lambert
我觉得只有最后一个问题被回答了。 - user3275095

0

正如你所说,大多数托管在互联网上的网页不仅处理的数据较少,而且没有人能够估计。HTTP服务器应该是通用的,并且应该有一种机制来避免以依赖项的名义发出多个请求。你说非持久性方法避免了单个客户端长时间阻塞端口,而服务器可能必须为更多客户端提供服务,这会给服务器带来很大的压力,但这并不正确。持久连接实际上通过限制服务器需要服务的查询数量来减轻服务器的负载。

希望这个HTTP持久连接能帮助你理解。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接