3

我们在服务器端尝试了以下方法,

将 2.5 MB 文件内容从 MS-Amazon 服务器写入 Java 客户端代码、Android 客户端代码和 IOS 客户端代码大约需要 55 秒

服务器示例代码 1

servletOutputStream = response.getOutputStream();
servletOutputStream.write(fileData);
servletOutputStream.flush();
servletOutputStream.close();

服务器示例代码 2

BufferedOutputStream bufferedOutputStream = new                  BufferedOutputStream(servletOutputStream);
bufferedOutputStream.write(fileData);
bufferedOutputStream.flush();
bufferedOutputStream.close();`

客户端阅读器代码

inputStream = httpConnection.getInputStream();
....
int nRead;
byte[] data = new byte[1024];
while ((nRead = inputStream.read(data, 0, data.length)) != -1) {
  buffer.write(data, 0, nRead);
}
buffer.flush();
buffer.close();

请分享您的想法以提高下载速度

提前致谢

4

1 回答 1

2

添加BufferedOutputStream不会有任何区别。默认情况下,servlet 输出流实际上是 a ByteArrayOutputStream,因为 servlet 容器必须在写入任何标头之前查看整个响应,因此它可以写入 Content-Length 标头。这会增加延迟,但不会增加 5 秒的价值。您可以通过使用固定长度或分块响应编码来解决它添加的任何延迟。有关详细信息,请参阅 Servlet API。但是,我认为您需要首先解决一个更大的问题,可能是网络或 DNS 或时钟偏差问题。

于 2012-08-16T10:26:50.610 回答