OLD | NEW |
1 # Proxy Auto Config Using WPAD | 1 # Proxy Auto Config Using WPAD |
2 | 2 |
3 Most systems support manually configuring a proxy for web access, but this is | 3 Most systems support manually configuring a proxy for web access, but this is |
4 cumbersome and kind of techical, so Chrome also supports | 4 cumbersome and kind of techical, so Chrome also supports |
5 [WPAD](http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol) for proxy | 5 [WPAD](http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protocol) for proxy |
6 configuration (enabled if "automatically detect proxy settings" is enabled on | 6 configuration (enabled if "automatically detect proxy settings" is enabled on |
7 Windows). | 7 Windows). |
8 | 8 |
9 ## Problem | 9 ## Problem |
10 | 10 |
11 Currently, WPAD is pretty slow when we're starting up Chrome - we have to query | 11 Currently, WPAD is pretty slow when we're starting up Chrome - we have to query |
12 the local network for WPAD servers using DNS (and maybe NetBIOS), and we wait | 12 the local network for WPAD servers using DNS (and maybe NetBIOS), and we wait |
13 all the way until the resolver timeout before we try sending any HTTP requests | 13 all the way until the resolver timeout before we try sending any HTTP requests |
14 if there's no WPAD server. This is a really crappy user experience, since the | 14 if there's no WPAD server. This is a really crappy user experience, since the |
15 browser's basically unuseable for a couple of seconds after startup if | 15 browser's basically unusable for a couple of seconds after startup if |
16 autoconfig is turned on and there's no WPAD server. | 16 autoconfig is turned on and there's no WPAD server. |
17 | 17 |
18 ## Solution | 18 ## Solution |
19 | 19 |
20 There's a couple of simplifying assumptions we make: | 20 There's a couple of simplifying assumptions we make: |
21 | 21 |
22 * If there is a WPAD server, it is on the same network as us, and hence likely | 22 * If there is a WPAD server, it is on the same network as us, and hence likely |
23 to respond to lookups far more quickly than a random internet DNS server | 23 to respond to lookups far more quickly than a random internet DNS server |
24 would. | 24 would. |
25 * If we get a lookup success for WPAD, there's overwhelmingly likely to be a | 25 * If we get a lookup success for WPAD, there's overwhelmingly likely to be a |
(...skipping 25 matching lines...) Expand all Loading... |
51 reconfiguration. | 51 reconfiguration. |
52 | 52 |
53 Here's what the **proposed** lookup policy looks like in practice: | 53 Here's what the **proposed** lookup policy looks like in practice: |
54 | 54 |
55 * If there's no WPAD server on the network, we try to do a lookup for WPAD, | 55 * If there's no WPAD server on the network, we try to do a lookup for WPAD, |
56 time out after 100ms, and disable WPAD. | 56 time out after 100ms, and disable WPAD. |
57 * If there's a WPAD server and our lookup for it answers in under 100ms or | 57 * If there's a WPAD server and our lookup for it answers in under 100ms or |
58 it's explicitly configured (via a custom PAC URL), we use that WPAD server. | 58 it's explicitly configured (via a custom PAC URL), we use that WPAD server. |
59 * If there's a WPAD server and our lookup for it answers after 100ms, we time | 59 * If there's a WPAD server and our lookup for it answers after 100ms, we time |
60 out and do not use it until a network change. | 60 out and do not use it until a network change. |
OLD | NEW |