HttpClient长连接的问题

问题描述

最近在研究httpclient保持长连接是否能提高响应速度的问题。想先请求百度首页,然后再向贴吧发请求,看在已经跟首页取得连接的情况下再请求贴吧会不会更快HttpGethttpget=newHttpGet("http://www.baidu.com/");//百度首页HttpGethttpget2=newHttpGet("http://tieba.baidu.com/index.html");//贴吧httpclient=newDefaultHttpClient();t1=System.currentTimeMillis();HttpResponseresponse=httpclient.execute(httpget1);t2=System.currentTimeMillis();response.getEntity().consumeContent();/*httpclient.getConnectionManager().shutdown();//关掉链接httpclient=newDefaultHttpClient();*/t3=System.currentTimeMillis();response=httpclient.execute(httpget2);t4=System.currentTimeMillis();response.getEntity().consumeContent();httpclient.getConnectionManager().shutdown();System.out.println("connect1:"+(t2-t1));System.out.println("connect2:"+(t4-t3));注释掉那部分是可选的,用来比较关和不关连接所用的时间上面得出一个很奇怪的结论,关掉连接时用时比不关还少,就是说关掉连接之后再发请求会更快理论上保持连接响应会更快才对吧?迷惑中~~求解救

解决方案

解决方案二:
给个大概数据参考执行shutdown时,t1=280t2=150不执行shutdown时,t1=280t2=220
解决方案三:
疏忽,上面的数据应该是connect1:280connect2:150和connect1:280connect2:220求解答!
解决方案四:
不明白楼主的意图。长连接是靠服务端不关闭响应流而一直保持连接来实现。
解决方案五:
引用3楼lyon_z的回复:

不明白楼主的意图。长连接是靠服务端不关闭响应流而一直保持连接来实现。

对我知道,但如果我在客户端执行shutdown不就是我主动关闭连接了么我最初意图是想验证长连接是否可以节省连接耗时,能节省多少

时间: 2024-09-29 09:16:04

HttpClient长连接的问题的相关文章

如果服务器不支持http长连接,能使用httpclient的连接池吗

问题描述 如题:假如服务器不支持http长连接,也就是说返回的结果中是connection:close,这样的情况下,使用httpclient的连接池还有作用吗,我的了解上是认为httpclient连接池是要建立在服务器支持长连接的基础上的,这点对吗?如果服务器不支持长连接,那么如何去优化代码,使http链接复用呢 解决方案 解决方案二:现在主流的开源服务器和商业服务器都支持http长连接:weblogic12c原生支持,11g,10g通过httpPubIIS7.0+支持Websphere8.0

C#中HttpClient使用注意:预热与长连接

原文:C#中HttpClient使用注意:预热与长连接 最近在测试一个第三方API,准备集成在我们的网站应用中.API的调用使用的是.NET中的HttpClient,由于这个API会在关键业务中用到,对调用API的整体响应速度有严格要求,所以对HttpClient有了格外的关注. 开始测试的时候,只在客户端通过HttpClient用PostAsync发了一个http post请求.测试时发现,从创建HttpClient实例,到发出请求,到读取到服务器的响应数据总耗时在2s左右,而且多次测试都是这

长连接-c#腾讯企业邮箱二次开发实现新邮件提醒

问题描述 c#腾讯企业邮箱二次开发实现新邮件提醒 新邮件提醒,需要维持长连接,图片是API文档关于长连接的描述, 但是我获取到token,传入参数ver=0,返回错误,无效的请求,有做过这个功能的吗,求助啊!! private bool GetPostData(string url, string pars, ref string json) { System.GC.Collect(); //url=请求的地址,pars= "var=0" string ret = "&quo

利用socket长连接做信息报警提示

问题描述 利用socket长连接做信息报警提示 现在在做一个项目,需要用服务器推送技术做一个报警提示,就是只要有没有处理的信息显示,就自动报警

php长连接,奏是这么简单

说到长链接大家肯定不陌生,就是复用一个链接持续不断的进行数据交互,它不像那些一夜情似的服务,需要频繁的打开和关闭链接,效率低的同时还增加了业务的复杂度.在裆下很多互联网业务场景都需要长连接的支持,比如:游戏.聊天.信息推送等等等,今天我们就一步一步来揭秘php长连接的玩法.我相信任何一项技术的实施都是因为业务场景的需要,所以这次我们还拿聊天室说事儿. 0x00 初试牛刀 记得以前用php写聊天室还是用polling的方式,毫无疑问,一提到polling,肯定会有人说long polling,没错

Delphi中多进程解决datasnap支持的tcp长连接数量少的问题

对于实时采集数据的项目,应用场景比如是这样的:5000客户端,每个客户端每隔500MS要给服务器上传一次数据. 大家知道,像INDY这种阻塞型的通信控件,所能支持的TCP长连接的一般地不能超过1000的数量(如果想要维持稳定运行的话). 原因是大家都晓得的,阻塞方式会为每一个SOCKET连接创建一个新的线程为之服务,而WINDOWS单个进程理论上允许最多的线程数量是2048个, 实际当中要少得多才行. 有人说可以用WINDOWS的IOCP通信模型解决,诚然!但IOCP编程过于复杂. 有人说,可以

使django与数据库保持长连接

最近遇到一个很蛋疼的问题,写了一个后台管理系统, 由于是后台管理系统 ,所以使用频率不是很高,当django程序在闲置一段时间后,再次打开后台系统 ,就变得很慢,然后又好了.查了很多方面,从模板引擎到请求(request),再到 django配置,nginx等等,都没有查出原因.虽然也查过是不是数据库的原因,但 都因为查的不够深入,没有查出所以然. 有一次在处理权限问题时,不断地追朔源代码,由于我使用的是dbroute来控 制权限,最后定位到了这个db(具体目录:/usr/local/lib/p

基于流模式长连接的简单实现

基于流模式的长连接我们可以做很多事情,比方说在局域网内,我们建立这种模式,可以时时传输数据,而不用每次传输数据是创建socket,传输完后,关闭socket.可以减少创建销毁socket的时间. 基于流模式的下,数据一直在发送,我们需要知道,每次发送数据量,所以常见的方式时,我们在发送数据时,指定此次发送数据的长度,服务器读取流数据时,先读取数据长度,然后再按长度读取此次发送的数据. 我使用select复用IO机制实现了一个简单的client,server机制,希望对初学者有帮助 客户端代码:

Comet:基于 HTTP 长连接的“服务器推”技术

很多应用譬如监控.即时通信.即时报价系统都需要将后台发生的变化实时传送到客户端而无须客户端不停地刷新.发送请求.本文首先介绍.比较了常用的"服务器推"方案,着重介绍了 Comet - 使用 HTTP 长连接.无须浏览器安装插件的两种"服务器推"方案:基于 AJAX 的长轮询方式;基于 iframe 及 htmlfile 的流方式.最后分析了开发 Comet 应用需要注意的一些问题,以及如何借助开源的 Comet 框架-pushlet 构建自己的"服务器推&