The answer to your question is no. There is no built-in dns caching in std lib resolver. Would it be helpful? Maybe in some cases. Our organization runs a local DNS cache on each server and points to resolv.conf. Thus, this does not necessarily help us in caching in this language.
There are several solutions that could help you. This package seems to have a pretty good solution. From the snippet in their readme, you could even do:
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:]) }, }
To enable it for all HTTP requests from http.Get and friends.
source share