我们在服务器端尝试了以下方法,
从MS-Amazon服务器到Java客户端代码,Android客户端代码和IOS客户端代码,大约需要55秒来存储2.5 MB文件内容
服务器样本代码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();
请分享您的想法以提高下载速度
提前致谢
最佳答案
添加BufferedOutputStream
不会有任何区别。默认情况下,servlet输出流实际上是ByteArrayOutputStream
,因为servlet容器在写入任何标头之前必须先查看整个响应,因此它可以写入Content-Length标头。这会增加延迟,但不会增加5秒的时间。通过使用固定长度或分块的响应编码,您可以避免它确实增加了任何延迟。有关详细信息,请参见Servlet API。但是,我认为您有一个更大的问题需要首先解决,可能是网络或DNS或时钟偏斜问题。