HTTP1.1 连接持久性(长连接)

HTTP1.1引入了连接持久性,以解决频繁创建TCP连接带来的资源消耗和网络拥塞问题。通过Keep-Alive头,客户端可以请求保持连接,实现请求和响应的管道化,提高效率。服务器端如Apache、Tomcat等需要配置支持连接持久性。在Java中,可以使用Apache的commons-httpclient库来设置HTTP连接头部实现长连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                              HTTP1.1 连接持久性(长连接)

 

      

  在提出持久连接之前,每获取一个URL都有创建一个单独的TCP连接,不断的加重HTTP服务器的负担并导致网络的拥塞。使用内联的图片或者相关数据常常使得客户端在很短时间内发送众多的请求。

 

  持久HTTP连接具有一下优势:

l         通过打卡和关闭更少的TCP连接,节省了路由和主机的CPU耗时,以及TCP协议控制阻塞使用的主机内存。

l         HTTP请求和响应可以在一个连接的基础上管道化。管道技术允许客户端发送多个请求而不用等待响应,使得TCP连接更加高效地使用从而更少的浪费时间。

l         通过减少TCP打开导致的包的消息来减少网络拥塞,通过给TCP充分的时间来确定网络的拥塞状态。

l         HTTP可以进化的更加优美,因为错误可以被报告而不用直接关闭TCP连接。使用高HTTP版本的客户端可能尝试一些新的功能,但是如果与旧版本服务端通信时在有错误报告后用要重试旧的语义。

 

     Java 实现HTTP1.1 连接持久性(长连接)

       1. 客户端发送HTTP包时,要在HTTP 的header中 设置Connection=Keep-Alive

   client用apache的commons-httpclient来执行method 。
   用 method.setRequestHeader("Connection" , "Keep-Alive" or "close") 来控制是否保持连接。

2. 服务器要配置支持连接持久性,常用的apache、resin、tomcat等都有相关的配置是否支持keep-alive。

    tomcat中可以设置:maxKeepAliveRequests

 

在一篇论文中看见一个测试结果,仅供大家参考:

  能够配置HTTP1.1消息头的connection属性为keep-alive,当配置为keep-alive时,每秒交互
能够达到360次以上,假如使用close方式,每秒交互大约200次以上,达到了预期的要求。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值