Go会缓存DNS查找吗?

我正在构建一个测试爬网程序,并且想知道Go(golang)是否缓存DNS查询。我没有看到有关dnsclient中缓存的任何信息。添加到任何搜寻器以防止大量额外的DNS查询似乎很重要。

如果不是,那么debian / ubuntu / linux,windows或darwin / OSX是否可以在网络级别进行任何缓存?

回答:

您的问题的答案是否定的。std

lib解析器中没有内置的dns缓存。这会有所帮助吗?也许在某些情况下。我们的组织在每台服务器上运行本地dns缓存,并将resolv.conf指向该服务器。因此,使用该语言进行缓存不一定会对我们有太大帮助。

有一些解决方案可以为您提供帮助。这个软件包似乎有一个很好的解决方案。从他们的自述文件中,您甚至可以执行以下操作:

http.DefaultClient.Transport = &http.Transport {

MaxIdleConnsPerHost: 64,

Dial: func(network string, address string) (net.Conn, error) {

separator := strings.LastIndex(address, ":")

ip, _ := dnscache.FetchString(address[:separator])

return net.Dial("tcp", ip + address[separator:])

},

}

为所有来自http.Get和朋友的http请求启用它。

以上是 Go会缓存DNS查找吗? 的全部内容, 来源链接: utcz.com/qa/398992.html

回到顶部