ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【CS.CN】深入探究下HTTP的Connection头:通过keep-alive实现高效网络连接 [打印本页]

作者: 小小小幸运    时间: 2024-6-20 19:39
标题: 【CS.CN】深入探究下HTTP的Connection头:通过keep-alive实现高效网络连接

0 序言

0.1 由来

Connection头部字段在HTTP/1.1中被引入,重要用于控制网络连接的持久性。最常见的值是keep-alive和close。当使用keep-alive时,TCP连接在一次哀求/相应之后不会立刻关闭,允许复用连接以处理处罚后续哀求。如允许以明显淘汰TCP连接的建立和终止带来的开销。
可以将Connection: keep-alive
机制比作一条常开的热线电话:
0.2 使用场景


0.3 现在还需要吗?

虽然Connection: keep-alive
在某些情况下依然有用,但当代HTTP/2和HTTP/3协议中已经内置了连接复用机制,使其重要性有所降低:

是否需要使用Connection: keep-alive
取决于具体的应用场景:

1 Connection: keep-alive
的机制


Connection 是一个哀求和相应消息头,用于控制网络连接的持久性。常见的值包括keep-alive和close。
规范中规定,Connection: keep-alive
表现哀求结束后保持连接不绝开,允许复用连接。相反,Connection: close则表现哀求结束后立刻关闭连接。
例如,如果使用keep-alive,服务器在处理处罚完第一个哀求后不会关闭连接,而是继续等候下一个哀求。
       在持久连接中,Connection头可以明显影响哀求的性能。默认情况下,HTTP/1.1会使用keep-alive,但明确设置可以确保行为一致。
  客户端发送带有Connection: keep-alive
头的哀求,服务器在相应后保持连接不绝开,等候后续哀求。这种机制可以淘汰连接建立和关闭的开销,提高性能。
   在HTTP长连接(持久连接)中,客户端与服务器之间会复用同一个TCP连接以发送多个哀求/相应对话。这通常会明显降低延迟和资源消耗。
  留意: Connection: keep-alive
机制与连接的长短无关。无论是短连接还是长连接,当客户端发送一个包含keep-alive头的哀求时,都会触发保持连接的机制。
2 语法 && 通过设置Connection: keep-alive
优化性能


现在规范中规定的值包括keep-alive和close:
  1. Connection: keep-alive
复制代码
例如,curl库默认设置,大概在频繁哀求时:
  1. # 客户端发送带有 Connection: keep-alive
  2. 消息头的哀求,保持连接不绝开。GET /somewhere/fun HTTP/1.1Host: origin.example.comConnection: keep-alive
复制代码
通过设置Connection: keep-alive
,可以避免频繁的连接建立和关闭,提高性能。
3 验证与性能提升

原有:
  1. [2023-03-05 09:38:02.209924][INFO][pid:2883,tid:2882][httpclient_keeplive.cpp:138][0b43001309a6] RequestHttps h.last_active_time: 1717551479, h: 1393928, tc_ts:565
复制代码
优化后:
  1. [2023-03-05 09:39:03.715435][INFO][pid:2883,tid:2882][httpclient_keeplive.cpp:138][0b43000d097e] RequestHttps h.last_active_time: 1717551543, h: 1393910, tc_ts:182
复制代码
实测数据显示,启用长连接后, HTTP哀求的平均耗时明显下降,TCP连接建立和关闭的开销大大淘汰。
4 总结

通过正确管理Connection头,尤其是使用Connection: keep-alive
,可以避免频繁的连接建立和关闭,从而淘汰哀求的团体耗时,提升性能。
References


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4