Стандартный net.Resolver не кэширует — каждый Dial делает DNS-запрос. Можно использовать библиотеки типа dnscache, которые оборачивают Resolver и хранят результаты в памяти с TTL. Подключаешь через кастомный Dialer в http.Transport. Важно уважать TTL записей и периодически обновлять кэш в фоне. В продакшне это реально ускоряет первый запрос к внешним сервисам на 5-50 мс.