2008-12-24

各ブラウザのDNS Resolver

@ITから。

http://www.atmarkit.co.jp/news/analysis/200812/22/chrome.html
これは読んで字のごとく、DNSによる名前解決を事前に行うという機能だ。Webページが表示されたら、そのHTMLに含まれる各URLのドメイン名について、先にDNSサーバにクエリを投げて名前解決をし、IPアドレスを取得しておく。こうすることで、処理自体は軽いのに時間がかかりがちな DNSクエリの往復時間を節約できる。

記事書く人のスキルセットは当然微妙なのだけど、各ブラウザのDNSリゾルバの実装について書いてみる。

IE(WinInet)でもDNS<->IPアドレスのマップというのはキャッシュ(ExpireTimeは当然レジストリで調整可能)するので、同一ホストへの二度目以降のアクセスは高速化するはず。これはMozilla (Firefox/Necko)でも同様に持ってる。

これらのブラウザで使われているDNS名のキャッシュというのは、1つのWebコンテンツは基本的に(画像やCSSなどの要素が)同一ホストに置かれている場合がほとんどであるということを想定しているもの。すなわちDNSクエリーの数を最小限にする最適化のため。

SafariはCoreFundationの中の話になるとは思うけど、同じようなことしてんじゃないかなぁ。Operaもだけど。持っている情報からはわからないけど。

ただ、Chromeのような動作は、一つだけ問題がある。Dynamic DNSを使った場合にそのアドレスが保証されないということ。モダンブラウザのDNS Resolverの動作でごねられた経験がある自分的には、Googleの実装方針を選べない。例えばActive Directoryなんて組んでいる環境で、ホスト名のIPアドレスがごろごろ変わってしまう状況があり得るイントラネットではこの実装は選べない。IPv6がやってこれば別だけどね。

0 件のコメント: