2014-07-07 208 views
0

的代码是(我写了一个工具类,虽然solrj会做的更好):为什么第一次运行HttpClient速度很慢但速度要快得多?

 for(int i=0;i<100;i++){ 
     SolrClient client = new SolrClient(new DefaultHttpClient()); 
     System.out.println(client.fetchFrom(URL, new SolrQuery("cc","id"))); 
     Thread.sleep(1000); 
    } 

第一花: HTTP:294 ---- DONE:326(MS)

但随后它只需要大约20MS就可以完成。

JVM是否缓存http结果?
当我再次运行它。结果就像这样。

+0

我会假设URL的名称查找被缓存,也许客户端连接是持久的。尝试在'for'循环的底部添加'client.close();'。 –

回答

1

第一次,必须将服务器的名称解析为IP地址,并且必须创建TCP连接。在后续请求中,通常可以重新使用连接。即使连接不能被重用,IP地址仍可能被缓存。

+0

我把工具类放到真正的项目中,并且运行速度很快(从spring获得singleton'HttpClient') – fairjm

相关问题