web-dev-qa-db-ja.com

DNSルックアップを減らす方法は?

DNS(ドメインネームシステム)が特定のホスト名またはドメイン名のIPアドレスを解決するのに約20〜120ミリ秒かかり、プロセスが適切に完了するまでブラウザは何もできません。

ブラウザがWebサーバーへのネットワーク接続を確立する前に、WebサーバーのDNS名をIPアドレスに解決する必要があります。 DNS解決はクライアントのブラウザーとオペレーティングシステムによってキャッシュできるため、有効なレコードがクライアントのキャッシュにまだある場合、遅延は発生しません。ただし、クライアントがネットワーク上でDNSルックアップを実行する必要がある場合、遅延は、有効な応答を提供できるDNSネームサーバーの近接度によって大きく異なります。

だから...どのように/サーバー側の最適化などでこのDNSルックアップを減らす方法はありますか?私はここで無力ですか、それともウェブページ/ホスティングプロバイダーのサイズに依存しますか?

2
Josip Ivic

DNSルックアップは、クライアントがWebページの読み取りを開始する前に行われるため、ページサイズについて心配する必要はありません。 DNSは基本的にドメイン名をIPアドレスに変換するプロセスなので、myexample.com --> 123.45.678.9であり、この変換はページ自体がIPアドレスから要求される前に行われる必要があることに注意してください。ページは小さい場合も非常に大きい場合もあり、DNSルックアップにも同じ時間がかかります。

したがって、DNSルックアップ時間を短縮する場合は、クライアントからそれほど遠くない場所に非常に信頼性の高いDNSサーバーがあることを確認する必要があります。それは次を意味する可能性があります。

  • レジストラまたは通常のWebホストとは別にDNSをホストします。 DNS Made EasyやDyn.comなど、DNSホスティングの専用プロバイダーがあります。これらのサービスは、DNSサーバーのグローバルに分散されたネットワークを運用するため、各クライアントマシンのできるだけ近くで検索に回答できます。そして(理論では)、彼らはDNSのみを実行しているため、実際にそのインフラストラクチャに投資し、信頼できる(一部のレジストラとは対照的に)インフラストラクチャに注意を払っています。
  • 独自のDNSサーバーをホストします。ただし、最初にそれを完全に理解してください。サービスの冗長性を維持するために、いくつかのVPSが必要です。これらのサーバーはすべてDNSクエリを処理し、PowerDNS、tinydns、またはBINDなどをインストールすることから始めて、パフォーマンスを最適化するように設定できます。

個人的には、自分が何をしているかを本当に知っていて、そうする強い理由がない限り、自分のDNSサーバーをホストすることはお勧めしません。ほとんどすべての場合、私が言及したプロバイダーの1つを使用した専用DNSホスティングのコストが比較的低いため、それがより良い選択になります。

3
Stephan

通常、バインドなどのすべてのDNSリゾルバーにはDNSキャッシュがあります。 x.x.x.xがDNSサーバーの場合、入力するとき

 Dig A averyuncommonebsite.com @x.x.x.x

応答時間の最初の2つの数字を取得します。次に、2回目に要求すると、応答がBINDであるDNSリゾルバーのキャッシュにあるため、1ミリ秒で応答が返されます。したがって、DNS応答時間を制御するために、独自のDNSリゾルバーを構築できます。

0