我正在构建一个测试爬虫,并想知道Go(golang)是否缓存DNS查询.我没有在dnsclient中看到有关缓存的任何信息.这似乎是添加到任何爬虫以防止大量额外DNS查询的重要事情.
Go(1.4+)是否缓存DNS查找?
如果没有,debian/ubuntu/linux,windows或darwin/OSX是否在网络级别进行任何缓存从中受益?
cap*_*aig 11
你的问题的答案是否定的.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:])
},
}
Run Code Online (Sandbox Code Playgroud)
为来自http.Get和朋友的所有http请求启用它.
| 归档时间: |
|
| 查看次数: |
5828 次 |
| 最近记录: |