登录
首页 >  Golang >  Go问答

如何为网络包设置 DNS 缓存?

来源:stackoverflow

时间:2024-04-29 09:39:39 144浏览 收藏

一分耕耘,一分收获!既然都打开这篇《如何为网络包设置 DNS 缓存?》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

在“net/http”包中,我可以通过以下方式缓存 dns 查找:

client := &http.client{
        transport: &http.transport{
            dial: (&nett.dialer{
                resolver: &nett.cacheresolver{ttl: 5 * time.minute},
                ipfilter: nett.dualstack,
            }).dial,
        },

    }

然后使用客户端检索网站。如何缓存 net 包的 dns 查找?例如,反向 dns 请求:

net.LookupAddr(ip)

由于这不使用变量,我很困惑如何设置它以及如何知道我是否正在使用缓存实例。


解决方案


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())
    }
}

net.lookupaddr 的行为似乎是使用主机解析器。我对 prod 中的服务执行此操作的方法是在主机上运行 dnsmasq,以便每个主机缓存 dns 查找。文档确实提到您可以通过实现自定义解析器来自定义行为,就像您所做的那样:https://golang.org/pkg/net/#LookupAddr

但我认为您正在寻找的部分是(从该文档页面的顶部):

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>