我们有一个 Proxy.pac 文件:
function FindProxyForURL(url, host)
{
if (dnsResolve("ProxyServer") == "10.1.1.116")
if (dnsDomainLevels(host) == 0 || isInNet(host, "10.0.0.0","255.0.0.0") || isInNet(host, "125.0.0.0","255.0.0.0") || isInNet(host, "127.0.0.0","255.0.0.0") || isInNet(host, "204.223.70.250","255.255.255.255") || dnsDomainIs(host, ".muj.com") || dnsDomainIs(host, "sv.com.gt") || dnsDomainIs(host, "com.es.gt"))
return "DIRECT";
else
return "PROXY 10.1.1.116:8080";
else
return "DIRECT";
}
运行正常,但很多用户抱怨,因为自部署 proxy.pac 以来,导航耗时太长。看来 dnsResolve 和 isInNet 是导致问题的原因。还有其他方法可以改进这个脚本吗?或者如何加速 DNS 解析?
答案1
我的理解是,每次调用 isInNet(host, ip, mask) 时,它都会尝试从 DNS 解析主机,这意味着多次解析,每次解析都会增加时间。
尝试解析一次,将这个解析的主机分配给一个变量,然后在所有 isInNet 调用中用它替换“主机”,以加快速度......类似于;
var resolvedIP = dnsResolve(host);
...
isInNet(resolvedIP, "10.0.0.0", "255.0.0.0")