Go の DNS 解決機能はルックアップをキャッシュしますか?
Go プログラミング言語の標準ライブラリには、dnsclient を介して DNS ルックアップをキャッシュするための組み込みメカニズムがありません。 DNS 応答をキャッシュすると、高価な DNS クエリの数が減り、アプリケーションの効率が大幅に向上しますが、Go は現在この機能を提供していません。
代替キャッシュ ソリューション
Go はネイティブ DNS キャッシュを提供しないため、開発者は外部パッケージを探索して機能を実装できます。そのようなパッケージの 1 つが「dnscache」で、DNS キャッシュの堅牢なソリューションを提供します。
提供されたコード スニペットに示すように、「dnscache」を Go の HTTP トランスポートと統合することで、
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 リクエストにわたって DNS キャッシュを有効にすることが可能になります。このアプローチにより、DNS ルックアップのオーバーヘッドが効果的に削減され、DNS ベースの対話に大きく依存するアプリケーションのパフォーマンスが向上します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3