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