这似乎是一个微不足道的问题,但仍然......我对此感到困惑。
几乎每个站点我都读过HTTP持久连接或保持连接连接比非持久连接更好。 问:那么,为什么非持久性甚至存在?
有人说,如果服务器为许多客户端提供服务,持久性有缺点,因为用户被剥夺了连接权。 问:所有受欢迎的网站都为数百万客户提供服务,这是否意味着他们不使用持久模式?
根据我的理解,我可以认为搜索引擎可能没有使用持久连接。
有人可以请教我这个话题。
我的另一个疑问是关于HTTP请求。我已经读过,如果一个页面包含指向多个对象的链接,那么Web浏览器会提取许多请求以获取所有这些(这就是使用持久连接的原因)。我怀疑的是为什么所有对象都没有嵌入页面并作为一个对象发送?如果论证是它使页面变重而不是带宽友好,那么无论如何浏览器打开并行连接以获取多个对象,这再次在网络上施加相同的负载。
好的,我知道这不能用于图像搜索,但如果页面包含很少的对象,那么我们可以将它们嵌入页面并发送。
这些似乎是愚蠢的问题,但我无能为力。我有疑问,我需要清楚,你可以提供帮助。 感谢
答案 0 :(得分:5)
original HTTP specification始终使用非持久连接; HTTP/1.1 added persistence因为嵌入大量外部对象的网页效率更高(在编写HTTP / 1.0时很少见。)
但是,即使HTTP / 1.1允许持久连接,也有一些实现不支持它们,或者仍然只支持HTTP / 1.0。因此,HTTP / 1.1要求发送Connection: keep-alive
标头以启用此功能,并发送Connection: close
以禁用它。
可以通过base64编码数据并将其包含在data:
URL中,直接在HTML中包含媒体。这通常不会,因为它会降低您的Web浏览器的速度。使用标准HTML页面,浏览器可以开始呈现页面结构,而无需等待(相当大的)内联data:
链接下载。
答案 1 :(得分:0)
正如您所说,通过互联网托管的大多数网页不仅可以处理更少的数据,而且没有人可以估算出这一点。 HTTP服务器应该是通用的,它应该有一种机制来避免依赖项名称中的多个请求。你说非持久性方法可以避免单个客户端长时间阻塞端口,因为服务器可能需要为更多客户端提供服务而且会产生很大的压力,但事实并非如此。持久连接实际上通过限制它必须服务的查询数量来减少服务器的负载。
希望HTTP Persistent connection能帮助您理解。