私のまだリリースされていません Delphi 2010アプリケーションでは、ユーザーは自分のファイルを自分のサーバーにアップロードできます。サーバー に投稿、各スライスに対して「スライス」(256キロバイトごと) Delphi 2010を使用してアップロードルーチンを最適化する方法は?
- 分割ファイル:今、私は(簡体字)アルゴリズムは基本的に、ファイルを送信するためにHTTPS POSTを使用しています
ie。 1MBのファイルのために:
--> Get Slice #1 (256KB)
--> Upload Slice #1 using TidHTTP.Post()
--> Get Slice #2 (256KB)
--> Upload Slice #2 using TidHTTP.Post()
--> Get Slice #3 (256KB)
--> Upload Slice #3 using TidHTTP.Post()
--> Get Slice #4 (256KB)
--> Upload Slice #4 using TidHTTP.Post()
私はインディ10を使用しています。私(ab)は私のプロファイラを何度も繰り返し使用していました。
(多くを達成しない他のよく最適化されたソフトウェアがあり、私もマルチスレッドを使用している、と私は私のコードを最適化するために私のベストを尽くしたにもかかわらず、私のベンチマークはまだ私はより良い行うことができますを教えて!
私はグループ化しようとしたが:より良いタイミング...のほぼ2倍の速さ私のアップロード・ルーチン)
私はそれが私のサーバーのせいではありません知っている...ここで私はまだ模索する必要があるのアイデアがあります単一のPOSTでスライスを作成すると、自然にパフォーマンスが向上しました(20〜35%)、再開能力が低下する。
私はSFTP/SSHの使用についても考えましたが、高速かどうかはわかりません。
ウェブソケットを使用して再開可能なアップロード(this componentなど)を実装すると、速度についてもわかりません。
私のアップロードにスピードアップする方法がありますか?私は、(ライセンスは私が自分のアプリケーションでそれを出荷することを可能にするならば)私はコマンドラインツールを含む、実装することができ任意の提案に開いていることを提供する:
- 再開可能アップロードが
- が速いサポートされています!
- 合理的なメモリ使用量
- セキュア&また、ログイン/ユーザ認証
を許可、ための主要なセキュリティ上の懸念のため、FTPは私が実装したいと思いませんものです。
ありがとうございます!
転送でデータ圧縮/圧縮解除が使用されていますか? – mjn
サーバー側には何がありますか? – kobik
@mjn:はい(スライスはすでにアップロード前に圧縮されています+私はIndyのTIdCompressorZLibを使用しています) – TheDude