2011-10-21 30 views
1

ユーザーが要求に応じてファイルを送信できるWebサービス(いわゆる「添付ファイル付きサービス」)があります。ユーザーは最大256 MBのファイルをアップロードできます。リクエストを解析してファイルを保存する実用的なソリューションがありますが、遅いです。ときには大きな添付ファイルを送信するとき - サーバーがタイムアウトを返します。「添付ファイル付きサービス」のMIME添付ファイルの解析

バイト単位でリクエストを読み取り、境界タグ(--b5a8d09eeeb161be29def84633d6f6fc)を探します。タグが見つかった場合は、ヘッダーを解析し、添付ファイルbase64でエンコードされたデータを読み取ります。改行文字のチェックもあります。

私の意見では、このコードには多くのサイクルがあり、パフォーマンスを向上させ、パフォーマンスを向上させることができます。

これはどのようにして、おそらく文字列(バイト配列ではない)を解析する方が高速な解決策ですか?それとも、他のアプローチがありますか?あなたはパフォーマンスを改善するために何をすべきですか?

よろしく、 evilone

答えて

0

からダウンロードすることができ、その答えを自分自身を発見しました。 StreamreaderReadLine()関数を使用すると、byte[]配列の1バイトを反復するよりも約40%高速です。 Pareenが提案したように圧縮に要求が追加された場合は、より高速になる可能性があります。

-1

あなたはLZMA圧縮を使用して、添付ファイルを圧縮してみてくださいおそれ。

UがOK http://www.7-zip.org/sdk.html

+0

どうすればいいですか?顧客がファイルを要求した後、ストリームを圧縮するか、それとも何を意味しますか? – evilone

+0

私はあなたが間違って私たちの問題を理解していると思います。圧縮がオプションの場合、要求を送信する前にクライアント側で圧縮を実行できます。この場合、これはオプションではありません。 – evilone

関連する問題