Pamięć podręczna AutoProxy
Funkcja WinHttpGetProxyForUrl wykonuje wyszukiwanie autoproxy na podstawie poszczególnych żądań dla określonego adresu URL. Jeśli jest zwracanych wiele serwerów proxy, aplikacje klienckie powinny testować każdy serwer proxy przed wysłaniem żądania (aby uzyskać więcej informacji, zobacz Tylko jeden serwer proxy jest obecnie obsługiwany sekcji w temacie Problemy z funkcją AutoProxy w usłudze WinHTTP). Informacje w tym temacie dotyczą wywołań WinHttpGetProxyForUrl, gdy klient określa automatyczne odnajdywanie serwera proxy.
WinHttpGetProxyForUrl opcjonalnie lokalizuje adres URL autoproxy i pobiera skrypt autoproxy z tej witryny. WinHttp używa skryptu autoproxy do lokalizowania serwerów proxy. Zarówno adres URL autoproxy, jak i skrypt autoproxy są buforowane dla określonej sesji. Dla każdej sesji buforowane są tylko jeden adres URL i skrypt autoproxy. Zazwyczaj skrypt autoproxy i adres URL są buforowane do momentu zmiany adresu IP skojarzonego z komputerem. Jeśli podczas wywołania winHttpGetProxyForUrlzostanie wykryty nowy adres IP, wywołanie podejmie próbę zlokalizowania nowego adresu URL i skryptu automatycznegoproxy oraz buforowania wyników. Tylko jeden użytkownik powinien być dozwolony na sesję, aby buforowane dane nie są udostępniane innym użytkownikom na komputerze. Aby uzyskać więcej informacji, zobacz Omówienie sesji WinHTTP.
Jeśli usługa out-of-process jest aktywna, gdy jest wywoływana winHttpGetProxyForUrl, buforowany adres URL i skrypt autoproxy są dostępne dla całego komputera. Jeśli jednak jest używana usługa out-of-process, a fAutoLogonIfChallenged flaga w pAutoProxyOptions struktura jest prawdziwa, to adres URL i skrypt autoproxy nie są buforowane. W związku z tym wywoływanie WinHttpGetProxyForUrl za pomocą elementu członkowskiego fAutoLogonIfChallenged ustawionego na true powoduje dodatkowe operacje narzutu, które mogą mieć wpływ na wydajność. Poniższe kroki mogą służyć do poprawy wydajności.
Aby zwiększyć wydajność
- Wywołaj WinHttpGetProxyForUrl za pomocą parametru fAutoLogonIfChallenged ustawionego na wartość false. Adres URL i skrypt autoproxy są buforowane dla przyszłych wywołań WinHttpGetProxyForUrl.
- Jeśli krok 1 zakończy się niepowodzeniem, z ERROR_WINHTTP_LOGIN_FAILUREwywołaj WinHttpGetProxyForUrl z fAutoLogonIfChallenged element członkowski ustawiony na true.