Go 中的 DNS 缓存
在测试爬虫的开发中,经常会出现一个疑问:Go(golang)是否实现了缓存机制DNS 查询?
在检查 dnsclient 包时,没有明确提及缓存。然而,此功能通常对于爬虫优化、最大限度地减少额外的 DNS 查询至关重要。
答案:
Go (1.4) 的默认实现不包含内置功能DNS 缓存。
替代缓存机制:
示例:
<code class="go">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:]) }, }</code>
以上是Go (golang) 是否包含内置 DNS 缓存?的详细内容。更多信息请关注PHP中文网其他相关文章!