我已经做了一个简单的HTTP客户端,它下载一组从网页解析的URL。
我的问题是,与真正的浏览器(IE,Firefox,Chrome)相比,下载速度很慢。尤其是在页面包含许多对象的情况下。
我注意到(使用wireshark)很多时候,真正的浏览器在开始加载页面后,会在同一毫秒内立即建立5-10个TCP连接。然后,这些连接将同时存在一段时间。
我的客户端还将设置并发的TCP连接(并且它将重用TCP连接),但并不是如此积极。我猜这是我的客户速度慢的原因之一。
在读取输入流之前,我已经尝试创建了几个URLConnections,但这对我不起作用。我没有经验,所以我可能做错了。
有没有人知道用URLConnection做这件事的方法(模仿浏览器在TCP连接设置方面所做的事情)?
发布于 2011-04-06 01:48:21
我推荐使用HttpClient:
http://hc.apache.org/httpcomponents-client-ga/
它支持内部连接管理,池化等。浏览器往往有这样的东西。
自从我上次使用以来,情况可能已经发生了变化,但UrlConnection在生产应用程序上运行得并不好。例如。它没有一个干净利落的方法来关闭它。
发布于 2011-04-06 01:55:55
我也推荐使用高性能的网络库,比如Apache Mina。这将自动为您创建线程池,并为您节省大量时间。
https://stackoverflow.com/questions/5556081
复制相似问题