0

バックグラウンド:

MVC3 ソリューションの一部として RouteHandler を作成しています。目的は、クラウド ストレージから画像とファイルを取得し、クラウド ストレージの URL をマスクしながらブラウザーに配信することです。

したがって、「メディア」サブドメインからのすべてのものは、画像を取得するロジックを実装した MediaRouteHandler にルーティングされます。

HttpWebRequest の非同期実装を取得するのに苦労しています。せいぜい、それは不規則に動作します。画像を正しくダウンさせることもあります。

質問:

それで、私の質問はです。

標準ブラウザは画像を同期または非同期で読み込みますか? それとも、ブラウザーでさえ一般的に行わないことをしようとしています (そして、時間を無駄にしているだけです)。

つまり、ブラウザが画像を取得するデフォルトの方法が同期スレッドからのものである場合、私はそれを行うだけで満足しています。

そうですか?

ありがとう。

ちょっとしたテスト:

これは、私の同期ルート ハンドラーの結果です。イメージ リクエストが重複していることがわかります。フィドラーを使用してモデムのダウンロード速度を模倣することで、それらが異なる速度で同時にダウンしていることがわかります。

同期ダウンロード速度

4

2 に答える 2

1

画像が 1 つずつ要求された場合、実際にはそれぞれMediaRouteHandlerが独自のスレッドで実行されます。HttpWebRequestしたがって、何もブロックされていないため、各画像の同期を簡単に実行できます(クライアント ブラウザーには完全な画像ファイルが必要です)。

パフォーマンス上の利点があるため、非同期呼び出しを検討する価値があることに注意してください。画像データが長い場合 - データ全体がまだクラウド ストレージからダウンロードされていなくても、クライアント ブラウザにデータをプッシュし始めることができます。

于 2012-08-13T23:04:09.197 に答える
1

ブラウザは画像を非同期にロードしますが、実際には、非同期ロードの主な理由はスレッドをブロックしないことです (また、いくつかの並列処理も同様です)。サーバー側の非同期リクエストに本当に苦労している場合は、バックグラウンド スレッドですべての呼び出しを同期としてラップしてみてください。この方法では、メイン スレッドをブロックせずに、画像を同期的にロードします。ただし、このシナリオが ASP.NET MVC で適切に機能するかどうかはわかりません。;]

于 2012-08-13T22:53:42.067 に答える