AutoProxy 快取

WinHttpGetProxyForUrl函式會針對指定的 URL 依要求執行 autoproxy 查閱。 如果傳回多個 Proxy,用戶端應用程式應該先測試每個 Proxy,再傳送要求 (以取得詳細資訊,請參閱 WinHTTP) 中的 AutoProxy 問題 中目前僅支援一部 Proxy 伺服器 一節。 本主題中的資訊適用于用戶端指定自動 Proxy 探索時對 WinHttpGetProxyForUrl 的呼叫。

WinHttpGetProxyForUrl 選擇性地找出 autoproxy URL,並從該網站下載 autoproxy 腳本。 WinHttp 會使用 autoproxy 腳本來尋找 Proxy 伺服器。 系統會針對指定的會話快取 autoproxy URL 和 autoproxy 腳本。 每個會話只會快取一個 autoproxy URL 和腳本。 一般而言,系統會快取 autoproxy 腳本和 URL,直到與電腦相關聯的 IP 位址變更為止。 如果在對 WinHttpGetProxyForUrl的呼叫期間偵測到新的 IP 位址,則呼叫會嘗試找出新的 autoproxy URL 和腳本並快取結果。 每個會話只能允許一個使用者,如此一來,快取的資料就不會與電腦上的其他使用者共用。 如需詳細資訊,請參閱 WinHTTP 會話概觀

如果呼叫 WinHttpGetProxyForUrl 時,進程外服務為作用中,則快取的 autoproxy URL 和腳本可供整個電腦使用。 不過,如果使用跨進程服務,且pAutoProxyOptions結構中的fAutoLogonIfChallenged旗標為 true,則不會快取 autoproxy URL 和腳本。 因此,使用fAutoLogonIfChallenged成員呼叫WinHttpGetProxyForUrl會導致額外的額外負荷作業可能會影響效能。 下列步驟可用來改善效能。

改善效能

  1. 呼叫 WinHttpGetProxyForUrl ,並將 fAutoLogonIfChallenged 參數設定為 false。 系統會快取 autoproxy URL 和腳本,以供 未來呼叫 WinHttpGetProxyForUrl
  2. 如果步驟 1 失敗,且ERROR_WINHTTP_LOGIN_FAILURE,請使用fAutoLogonIfChallenged成員設定為TRUE呼叫WinHttpGetProxyForUrl