Go にはオンボード DNS キャッシュがありませんか?
Web クローリングにおけるリソース効率の高い操作の注目すべき側面にもかかわらず、Go には現在ネイティブ DNS がありませんルックアップキャッシュ。このため、基盤となるオペレーティング システムに Go が利用できるキャッシュ機能が含まれているかどうかという疑問が生じます。
潜在的な代替手段の検討
Go は組み込みのキャッシュを提供しませんが、基盤となる OS は次のオプションを提供する場合があります:
サードパーティ ソリューションの探索
Go のネイティブ キャッシュの欠如を補うには、dnscache のような外部パッケージを検討してください。このソリューションでは、readme のコード スニペットで示されているように、DNS キャッシュを簡単に実装できます。
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 リクエストのキャッシュが有効になります。以上がGo にはオンボード DNS キャッシュがありませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。