それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

DNS プリフェッチの制御 |HTMLに書くだけでサイト読込が速くなる(かも)

Amazon.co.jpのソースを見ていたら、見慣れないタグを見つけた

dns-prefetch タグ

   <meta http-equiv="x-dns-prefetch-control" content="on">
    <link rel="dns-prefetch" href="http://g-ecx.images-amazon.com">
    <link rel="dns-prefetch" href="http://z-ecx.images-amazon.com">
    <link rel="dns-prefetch" href="http://ecx.images-amazon.com">
    <link rel="dns-prefetch" href="http://completion.amazon.com">
    <link rel="dns-prefetch" href="http://client-log.amazon.com">

dns-prefetchの名前の通り、DNSを事前解決する。WEBページの読込はDNSによる名前解決がボトルネックになるので、これはいい規格だと思った。詳しく調べてみた。

Firefox3.5で対応

Firefox 3.5 では DNS prefetching が導入されました。これにより、 Firefox は文書中に埋め込まれたアンカーに加え、画像、CSSJavaScript などの文書内で参照されている外部リソースの URL に対し、予めドメインの名前解決を行います。

このプリフェッチはバックグラウンドで行われるため、実際にリソースが必要となった際には既に名前解決が終了していることになります。これにより、例えばユーザーがリンクをクリックした際の待ち時間を減らすことができます。

DNS プリフェッチの制御 | MDN

使い方

    <link rel="dns-prefetch" href="http://www.example.com">

ただしHTTPSのページは事前解決されない。HTTPSの中身が漏れちゃうってことだものね。。。

逆にプリフェッチさせない

   <meta http-equiv="x-dns-prefetch-control" content="off">

濫用がない前提ですよね。

DNSプリフェッチのタグを10000個くらい書くとどうなるかな。o(´∀`)oワクワクしますね

さて、DNSサーバーに攻撃をしようか。とならないように、Google信者は、prefetch 有効にして、DNSGoogle PublicDNSにでも向けていればいいじゃないでしょうか。一般人は通常通りDNSサーバーを使ってキャッシュ効かせたほうが・・・。人気サイトに埋め込み、サイト改ざんで埋め込めたら、第三者攻撃とかできそうですね。

もうブラウザが内部的にやってる・・・よね?

だけどブラウザのDNSキャッシュでやってそう・・・どうなんでしょう

2chのまとめサイトはPreFetch入れて欲しい。

まとめサイトは画像貼り込みすぎてカオスだから、プリフェッチするドメインを指定したほうが速くなる気がする。

8個に限定されるから安心っかなぁ。。。

僕はDNSの仕組みを詳しくは知らないんですが、存在しないドメインをたくさん書いた場合、キャッシュ応答できないので、トラフィックはどんどん増える気がするなぁ・・・8スレッドのDNSプリフェッチだけで処理してるんだろうか。ちょっと調べてみないとわからないです。

OperaChromeがHTTPのコネクション数をIE6の8本から大幅に増やしてるっぽいし、FireFoxのHTTPコネクションも8本から増えてるだろうし、DNSのプリフェッチも増えてそう・・・ちゃんと見てないから想像ですけど。