Keep-Alive模式

Keep-Alive模式下当一个请求发起后,客户端和服务器之间的TCP连接不会关闭重新建立连接,会一直保持连接,如果客户端再次访问相同资源,会继续使用同一条建立的连接,启用Keep-Alive模式更高效,性能更高
 
http 1.0中默认是关闭的,需要在http头加入"Connection: Keep-Alive",才能启用Keep-Alive;从HTTP/1.1开始,浏览器都默认开启了keep-live,保持连接特性,如果加入"Connection: close ",才关闭。目前大部分浏览器都是使用HTTP1.1。keep-live不会永久保持连接,它有一个保持时间,可以在不同服务器软件(如 nginx)中设定。
 
开启Keep-Alive的优缺点如下

  • 优点:开启后更高效,避免了连接建立和关闭释放的性能开销。
  • 缺点:长时间的TCP连接容易导致系统资源的无效占用,浪费系统资源。

 
当保持长连接时,如何判断一次请求已经完成?

①消息首部字段Content-Length,它表示实体内容的长度。浏览器通过该字段来判断当前请求的数据是否已经全部接收。如果服务器知道返回内容的长度时(如静态页面或者图片),可以通过设置Content-Length来控制请求的结束;如果服务器不知道请求结果的长度时,如动态页面或者数据,就不能使用Content-Length,就需要使用第二种方法Transfer-Encoding字段。

②消息首部字段Transfer-Encoding,它指传输编码。如果服务器不知道请求结果的长度时,就可以使用Transfer-Encoding:chunked来告诉浏览器当前的编码是将数据分块传递,Chunked编码将使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。最后当浏览器接收到一个长度为0的chunked时,就知道当前请求内容已全部接收
 
文章转载
HTTP Keep-Alive模式

posted @   南宫云珠  阅读(178)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
点击右上角即可分享
微信分享提示