在“ net / http”包中,我可以通过以下方式缓存DNS查找:
client := &http.Client{
Transport: &http.Transport{
Dial: (&nett.Dialer{
Resolver: &nett.CacheResolver{TTL: 5 * time.Minute},
IPFilter: nett.DualStack,
}).Dial,
},
}
然后使用客户端检索网站。如何为网络程序包缓存DNS查找?例如反向DNS请求:
net.LookupAddr(ip)
因为它不使用变量,所以我对如何设置它以及如何知道是否使用缓存实例感到困惑。
答案 0 :(得分:2)
nett软件包似乎只有一个“ Resolve”方法,而不是官方net软件包具有的LookupAddr,LookupIP等。因此,反向查询似乎不可用。这是从名称中正常查找地址的方法
package main
import (
"github.com/abursavich/nett"
"time"
)
func main() {
r := nett.CacheResolver{TTL: 5 * time.Minute}
a, _ := r.Resolve("muppet.com")
for _, i := range a {
print(i.String())
}
}
答案 1 :(得分:1)
net.LookupAddr
的行为似乎是使用主机解析器。在产品中为服务执行此操作的方式是在主机上运行dnsmasq,以便每个主机缓存DNS查找。该文档确实提到您可以通过执行自定义解析程序来自定义行为,例如:https://golang.org/pkg/net/#LookupAddr
但是我认为您正在寻找的是(从该文档页面的顶部):
DefaultResolver是程序包级别的Lookup函数和没有指定解析程序的Dialer使用的解析程序。