| 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 |