我已经实现了一个REST服务,用于使用IOUtils.copy()下载一个中等大小(250 Mb)的zip文件,类似于Most effective way to write file to servletoutputstream。使用HttpURLConnection从另一个应用程序调用REST服务。我在接收端使用IOUtils.copy()将文件保存到磁盘。
下载文件需要30多分钟。这方式太慢了。
想法?更好的实施?
答案 0 :(得分:3)
我发现了这个问题。
我在同一台机器上运行客户端和服务器进行测试。一旦我将一台机器移到另一台机器上,转移就花了一分多钟。
答案 1 :(得分:0)
您可以阅读源代码并亲自查看默认缓冲区大小为4096
我个人在特定情况下使用8192作为缓冲区大小。
考虑使用缓冲区大小。
您可以自己轻松地实现此副本,或者查看源文件here作为参考。
另外,考虑执行多线程下载,如果可能,因为您的服务器支持多个连接(我假设)。