2

入力ストリームを介してリクエスト オブジェクトからコンテンツを抽出できます。それがストリームの場合、データが os->webcontainer->etc などを介してクライアントからサーブレットに「ライブ」で転送されていることを意味しますか?

リクエストで大量のデータを渡すと、OS/JVM のどこかにキャッシュされますか、それともライブのソースから直接読み取られますか? tera/peta バイトのデータへのリクエスト inputStream を開き、問題なくバイト単位で outputstream に書き込むことはできますか (所要時間とタイムアウトは無視します)。

キャッシュされている場合は更新します。なぜストリームなのですか? 一度開いたら一度だけ読むことができます(そして保存する必要があります)。代わりに、必要な回数だけ読むことができるはずです。

ランダムなクエリだけで、実用的ではありません。

4

1 に答える 1

1

それらはキャッシュされません。何かがキャッシュされている場合は、再利用できます。ただし、これらのストリームは再利用できないため、キャッシュされません。

ただし、それらがメモリにバッファリングされているか、メモリではなくローカル ディスク ファイル システムにバッファリングされている可能性は十分にあります。これは完全にサーバーの実装、さらには基盤となるオペレーティング システム (使用するオペレーティング システムに応じて「仮想ディスク」または「スワップ ディスク」とも呼ばれます) の決定に委ねられます。ただし、このバッファーは通常、1 メガバイト単位の大きさではありません。たとえば、標準の Java SEBufferedInputStreamクラスには 8KB の内部バッファがあります。

tera/peta バイトのデータへのリクエスト inputStream を開き、問題なくバイト単位で outputstream に書き込むことはできますか (所要時間とタイムアウトは無視します)。

サーバーで通常設定可能な HTTP POST サイズ制限に達する可能性があります。たとえば、Tomcat のデフォルトは 2GB ですが、完全に無効にすることができます。HTTP コネクタmaxPostSizeの設定も参照してください。

于 2013-06-10T21:30:11.717 に答える