1

これは思ったほど単純ではないことを約束します。後のリクエストが別の URL に対するものであっても、HttpSendRequest への最初の呼び出しが後続の呼び出しよりもはるかに長い時間がかかるのはなぜだろうか。例えば:

InternetConnect(... "foo.com" ...) // すぐに返す HttpOpenRequest(...) //
すぐに返す
HttpSendRequest(...) // ~3 秒かかる
HttpSendRequest(...) // ~ かかる200ミリ秒

InternetConnect(... "bar.com" ...) // すぐに返す HttpOpenRequest(...) //
すぐに返す
HttpSendRequest(...) // 約 200 ミリ秒かかる

最初の HttpSendRequest(...) に時間がかかるのはなぜですか? これは、URL に関係なく、非常に一貫しています。

ありがとう、グレッグ

4

2 に答える 2

1

最初のリクエストで発生する必要があり、2 番目のリクエストで発生する必要がないことがいくつかあります。DNS ルックアップとプロキシ検出がすぐに思い浮かびます。

于 2009-10-09T20:27:24.270 に答える
-2

また、構成ファイルのロードである可能性もあります。一部の .Net フレームワーク クラスは、アプリケーション構成ファイルから設定を読み取ろうとし、ファイルまたは設定が見つからない場合はデフォルトに戻します。たとえば、フードの下で使用される Http クラスであると私が考える WebRequest/WebClient は、明示的な Web プロキシ設定をチェックします。それらが存在しない場合は、OS からのプロキシ設定 (IE 内で設定されている) が取得されます。これらすべてが、通常、クラスが最初に使用されるとき、つまり、静的コンストラクター内で作業が行われる場合に、初期起動の遅延に寄与します。

構成設定は次のように定義されています。

.NET Framework の構成ファイル スキーマ

于 2009-10-10T01:30:32.370 に答える