Apache Commons Page から引用しますCommons FileUpload
このページでは、commons fileupload ライブラリの従来の API について説明します。従来の API は便利なアプローチです。ただし、究極のパフォーマンスを得るには、より高速なストリーミング API を使用することをお勧めします。
私の質問
Streaming API
よりも速くなる特定の違いは何traditional API
ですか?
Apache Commons Page から引用しますCommons FileUpload
このページでは、commons fileupload ライブラリの従来の API について説明します。従来の API は便利なアプローチです。ただし、究極のパフォーマンスを得るには、より高速なストリーミング API を使用することをお勧めします。
私の質問
Streaming API
よりも速くなる特定の違いは何traditional API
ですか?
主な違いは、ファクトリ クラスで気付いたように、ファイルの処理方法にあります。
入力ストリームの取得中に、ストリーミング API がディスクに保存されません。最終的には、ファイルをより高速に処理できるようになります (一時メモリにコストがかかります)。ただし、本当に必要な場合を除き、バイナリをディスクに保存することは避けてください。
その後、もちろん、バッファリングされた入力ストリーム、バイト配列などを使用して、データをディスクに保存できます。
編集: ストリームを開くときのハンドラー ( fileItemStreamElement. openStream () ) は、共通の InputStream インスタンスです。したがって、「大きなファイルだとどうなるか」に対する答えは、次のようなものですJavaのInputStreamでのメモリの問題
編集: ストリーミング API は、ディスクに保存したり、メモリに保存したりしないでください。それは、ファイルを必要な場所にコピーするために読み取ることができるストリームを提供するだけです。これは、一時ディレクトリを持たないようにし、ファイルを保持するのに十分なメモリを割り当てないようにする方法です。これは、ブラウザからディスク/メモリに 1 回、次にディスク/メモリから保存先に 2 回コピーされないため、少なくとも高速になるはずです。
ストリーミング API は、ディスクに保存したり、メモリに保存したりしないでください。それは、ファイルを必要な場所にコピーするために読み取ることができるストリームを提供するだけです。これは、一時ディレクトリを持たないようにし、ファイルを保持するのに十分なメモリを割り当てないようにする方法です。これは、ブラウザからディスク/メモリに 1 回、次にディスク/メモリから保存先に 2 回コピーされないため、少なくとも高速になるはずです。
ユーザー ガイドで説明されている従来の API では、ユーザーが実際にアクセスできるようになる前に、ファイル アイテムをどこかに保存する必要があると想定しています。このアプローチは、アイテムのコンテンツに簡単にアクセスできるため便利です。一方で、メモリと時間がかかります。
ストリーミングとは、一般に、アプリケーションの実行時に、多くの場合リアルタイムで、また多くの場合、内容が事前に正確にわかっていない動的ソースからデータが送信および解析される API (Apache FileUpload や StAX など) を指します。
従来のモデルは、データに関するより詳細な情報を提供する (従来のファイル処理 API、DOM API) などの API を参照します。
FileHandling API の場合と同様に、従来のアプローチでは、ユーザーが実際にアクセスできるようになる前に、ファイル項目をどこかに保存する必要があると想定していました。このアプローチは、アイテムのコンテンツに簡単にアクセスできるため便利です。一方で、メモリと時間がかかります。
ストリーミング API は、メモリ フットプリントが小さく、プロセッサ要件が小さく、特定の状況でより高いパフォーマンスを発揮できます。
作業中のドキュメントの「段ボールのチューブ」ビューの基本で機能します。