3

サーバー側で次の方法を試しましたが、

MS-Amazon サーバーから Java クライアント コード、Android クライアント コード、および IOS クライアント コードに 2.5 MB のファイル コンテンツを書き込むのに約 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ても違いはありません。デフォルトではByteArrayOutputStream、サーブレット コンテナはヘッダーを書き込む前に応答全体を確認する必要があるため、サーブレットの出力ストリームは実際には です。したがって、Content-Length ヘッダーを書き込むことができます。これによりレイテンシが追加されますが、5 秒の価値はありません。固定長またはチャンクされた応答エンコーディングを使用することで、追加される遅延を回避できます。詳細については、サーブレット API を参照してください。ただし、最初に解決する必要があるより大きな問題、おそらくネットワーク、DNS、またはクロック スキューの問題があると思います。

于 2012-08-16T10:26:50.610 に答える