HTTP是无状态的,那么保持活着意味着什么呢?

时间:2011-05-19 15:20:27

标签: http-headers http-proxy

Keep-Alive: 300
Proxy-Connection: keep-alive

正如我们所知,当请求得到响应时HTTP连接已关闭,那么keep-alive是什么意思,有人可以详细说明吗?

5 个答案:

答案 0 :(得分:12)

这意味着可以保持连接打开以请求更多资源,例如图像和样式表。

答案 1 :(得分:6)

  

正如我们所知,当请求得到响应时,HTTP连接已关闭

什么是HTTP连接?实际上,它是一个实现HTTP的套接字连接。只有在HTTP1.0中,连接才会在每次响应后关闭。为了节省设置TCP / IP连接的成本,HTTP1.1指定除非客户端发送标头

Connection:close

或服务器返回相同的标题,然后套接字保持打开状态。您可以根据需要向此套接字提供任意数量的请求,并且响应将按照请求的顺序返回。这要求响应使用分块传输编码发送,或者包含内容长度标头,以便可以检测/计算每个响应的结束。

proxy-connection标题再次不同,仅与客户端和代理服务器之间的对话有关。

我建议将此页面作为协议的优秀指南。

HTTP Made Really Easy

答案 2 :(得分:3)

这个问题已经得到回答和接受,但我想详细解释一下:

  

Keep-alive无法永久保持一个连接;应用程序   在服务器上运行确定保持的限制   连接有效,在大多数情况下,您可以配置此限制。

在HTTP / 1.1中,默认使用Keep-alive。如果客户有其他请求,他们将使用相同的连接。

  

无状态一词并不意味着服务器无法保留   一个连接。它只是意味着服务器无法识别任何内容   任何两个请求之间的关系。

答案 3 :(得分:1)

协议确实是无状态的,但是keep-alive表示连接应该在客户端和服务器之间保持打开状态。

打开TCP连接是一项相对较重的操作,保持该连接打开可避免与打开新连接相关的设置和拆卸成本。

答案 4 :(得分:1)

Keep-alive与有状态无关。

在网络中,最昂贵的操作之一是反复打开和关闭连接。然而,现代HTML页面在技术上要求您做到这一点:首先,获取页面,然后获取每个资源并重复,直到您拥有所有内容。由于这将非常慢,HTTP / 1.1允许代理保持连接活着,直到他从服务器上找到他想要的一切。

Keep-alive基本上是网络浏览器,告诉服务器不要挂断。