AutoProxy Cache

WinHttpGetProxyForUrl 関数は、指定された URL に対して要求ごとに自動検索を実行します。 複数のプロキシが返された場合、クライアント アプリケーションは要求を送信する前に各プロキシをテストする必要があります (詳細については、「WinHTTP での AutoProxy の問題」の「 1 つのプロキシ サーバーのみが現在サポートされています 」セクションを参照してください)。 このトピックの情報は、クライアントが自動プロキシ検出を指定する場合の WinHttpGetProxyForUrl の呼び出しに適用されます。

WinHttpGetProxyForUrl は、必要に応じて autoproxy URL を検索し、そのサイトから autoproxy スクリプトをダウンロードします。 WinHttp では、autoproxy スクリプトを使用してプロキシ サーバーを検索します。 指定したセッションに対して、autoproxy URL と autoproxy スクリプトの両方がキャッシュされます。 セッションごとにキャッシュされる autoproxy URL とスクリプトは 1 つだけです。 通常、自動proxy スクリプトと URL は、コンピューターに関連付けられている IP アドレスが変更されるまでキャッシュされます。 WinHttpGetProxyForUrl の呼び出し中に新しい IP アドレスが検出された場合、呼び出しは新しい autoproxy URL とスクリプトを検索し、結果をキャッシュしようとします。 キャッシュされたデータがコンピューター上の他のユーザーと共有されないように、セッションごとに 1 人のユーザーのみを許可する必要があります。 詳細については、「 WinHTTP セッションの概要」を参照してください。

WinHttpGetProxyForUrl が呼び出されたときにアウトプロセス サービスがアクティブになっている場合は、キャッシュされた autoproxy URL とスクリプトをコンピューター全体で使用できます。 ただし、アウトプロセス サービスが使用され、pAutoProxyOptions 構造体の fAutoLogonIfChallenged フラグが true の場合、autoproxy URL とスクリプトはキャッシュされません。 そのため、fAutoLogonIfChallenged メンバーを TRUE に設定して WinHttpGetProxyForUrl を呼び出すと、パフォーマンスに影響を与える可能性のある追加のオーバーヘッド操作が発生します。 パフォーマンスを向上させるには、次の手順を使用できます。

パフォーマンスを向上させるには

  1. fAutoLogonIfChallenged パラメーターを false に設定して WinHttpGetProxyForUrl を呼び出 します。 自動proxy URL とスクリプトは、 今後 WinHttpGetProxyForUrl を呼び出すためにキャッシュされます。
  2. ERROR_WINHTTP_LOGIN_FAILUREで手順 1 が失敗した場合は、fAutoLogonIfChallenged メンバーを TRUE に設定して WinHttpGetProxyForUrl を呼び出します。