我创建了一个简单的HTTP客户端,它下载了一组从网页解析的URL。
我的问题是,与真正的浏览器(IE,Firefox,Chrome)相比,下载速度很慢。特别是如果页面包含许多对象。
我注意到(使用wireshark)很多时候真正的浏览器会在开始加载页面后立即在相同的毫秒内设置5-10个TCP连接。那些连接将同时存在一段时间。
我的客户端还将设置并发TCP连接(并且它将重用TCP连接),但根本不是这样。我猜这是我的客户慢的原因之一。
我尝试在从输入流中读取之前创建几个URLConnections,但这对我不起作用。我虽然缺乏经验,所以我可能做错了。
有没有人知道如何使用URLConnection执行此操作(模仿浏览器在TCP连接设置方面的操作)?
答案 0 :(得分:0)
我建议使用HttpClient:
http://hc.apache.org/httpcomponents-client-ga/
它支持内部连接管理,池化等。 浏览器往往会有这种东西。
自上次使用以来,情况可能已发生变化,但UrlConnection对于生产应用程序效果不佳。防爆。它没有一个干净的方法来关闭它。
答案 1 :(得分:0)
我还建议使用高性能网络库,例如Apache Mina。这将自动为您创建线程池并为您节省大量时间。