ホームページ  >  記事  >  バックエンド開発  >  Go にはオンボード DNS キャッシュがありませんか?

Go にはオンボード DNS キャッシュがありませんか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 22:28:03878ブラウズ

Does Go Lack Onboard DNS Caching?

Go にはオンボード DNS キャッシュがありませんか?

Web クローリングにおけるリソース効率の高い操作の注目すべき側面にもかかわらず、Go には現在ネイティブ DNS がありませんルックアップキャッシュ。このため、基盤となるオペレーティング システムに Go が利用できるキャッシュ機能が含まれているかどうかという疑問が生じます。

潜在的な代替手段の検討

Go は組み込みのキャッシュを提供しませんが、基盤となる OS は次のオプションを提供する場合があります:

  • Debian/Ubuntu/Linux: 明示的な DNS キャッシュ メカニズムなし
  • Windows: ローカル DNS 解決用の HOSTS ファイルを維持する
  • Darwin /OSX: mDNS レスポンダーとキャッシュをサポートします

サードパーティ ソリューションの探索

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。