![使用 dnsResolve 和 isInNet() 函数解析 DNS 需要很长时间](https://linux22.com/image/539053/%E4%BD%BF%E7%94%A8%20dnsResolve%20%E5%92%8C%20isInNet()%20%E5%87%BD%E6%95%B0%E8%A7%A3%E6%9E%90%20DNS%20%E9%9C%80%E8%A6%81%E5%BE%88%E9%95%BF%E6%97%B6%E9%97%B4%20.png)
我们有一个 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")