当前位置: 首页 > 面试题库 >

Go会缓存DNS查找吗?

澹台镜
2023-03-14
问题内容

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

Go(1.4+)是否缓存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请求启用它。



 类似资料:
  • 问题内容: 有没有办法查看/转储java.net api使用的DNS缓存? 问题答案: 这是一个打印正负DNS地址缓存的脚本。

  • 问题内容: 我对DNS缓存感到困惑。我正在编写一个小型转发代理服务器,并想在Linux系统上使用OS DNS缓存。 如果我理解正确,则在浏览器级别存在DNS缓存。然后在OS级别进行DNS缓存(Windows拥有DNS缓存。我不确定Linux发行版是否默认具有它)。 那么,浏览器/代理服务器如何使用OS DNS缓存?我正在尝试查找是否可以依靠Linux进行DNS缓存,而不是自己在代理内部进行缓存。

  • DNS 是使用 Go 开发的 DNS 库,一个完整,可用的 DNS 库,支持所有广泛使用的 Resource Records,包括 DNSSEC 类型。DNS 支持服务器端和客户端编程开发。 目标: KISS 快 更小的 API 特性: UDP/TCP 查询,IPv4 和 IPv6 RFC 1035 域文件解析($INCLUDE, $ORIGIN, $TTL and $GENERATE (for

  • 在下面的java代码中,我正在进行DNS SRV记录查找,以解析给定域名的目标域名和相关端口,例如root@1000000000.blubluzone.com.用/HERE/below表示的查找函数以某种方式返回null,我无法获得查询结果(即记录数组为null)。因此,当在for循环中访问记录数组时,将引发空指针异常。 你认为我缺少什么来让下面的代码工作。我正在使用dnsjava,相关的API

  • 我想澄清一些关于hibernate二级缓存的问题。需要澄清的一点是,HQL查询是否总是会击中数据库(至少对于获取id)。 假设我们有实体 地址的数据库表有一个对客户(id)的外键引用,以支持一对多关系。 作为前提条件,我已将hibernate的2级缓存启用为EHcache。只有实体和关联被设置为可缓存。未启用查询缓存。 我知道如果我使用这个会话。get()或会话。load()多次,只有第一次调用才

  • 查找缓存的引用表位于BigQuery中,我们可以读取它并将其作为ParDo操作的侧输入传入,但无论我们如何设置触发器/窗口,它都不会刷新。 根据这里的I/O页面(https://beam.apache.org/documentation/io/build-in/),它说Python SDK只支持BigQuery接收器的流,这是否意味着BQ读取是一个有界源,因此不能在此方法中刷新? 试图在源上设置非