DNSキャッシュでWebの表示速度は速くなるか試してみた

DNSキャッシュでWebの表示速度は速くなるか試してみた

春が来ました!!
季節の変わり目は、環境や周辺の人々の衣装など、色んなものが変わります。

そんな変化の中、今開いているブラウザでもっと速くWebページを表示できないか?
と思い、今回はこんな仮説(?)のもとで実験をやります。

その仮説とは・・・・!!!!

“Client PCのhostsファイルに接続先のdomain nameとIPアドレスを予め書き込んでしまえば、Webページの表示はもっと速くなるはず!!”

・・・・・
色んな方の心の声が聞こえますね~♪

まあまあ、興味がある方はぜひこのまま下へスクロールしてください。

仮説「DNSのキャッシュ改善で速くなる」の根拠

既にご存知の通り(多分)、ブラウザーでWebページを表示する時、Client PCはざっとこんなことをします。

1.DNSへ問い合わせ
2.サーバとTCP接続確立(3 way handshake)
3.サーバと鍵を交換し、通信内容を暗号化 ※URLの頭にhttpsと記載した場合
4.サーバからWebページをダウンロードし、ブラウザーが解析後画面に表示

今回の仮説では、「1.DNSへ問い合わせ」にかかる時間を短くすることで、Webページの表示が早くなるのではと思ったまでです。

どのぐらい速くなるの?

以下はDNSサーバへのping結果です。応答が返ってくるまで、2ms ~ 4msぐらいのラウンドトリップ時間がかかっているで、最低2ms以上は早くなるでしょうー♪

image05

2msと聞いた瞬間、目をキラキラしていらした方々の目から光が消えていく光景が浮かびますが・・・ ^^;;

あくまでもこれは仮説!! 実際はもっとも~~~~っとすごく短縮されるかも知れませんので。
ここでやめてしまうと損しますよ~~(この時点では自分も結果を知りません。フフフ)

計測の支度を~。計測ブックマークレットを入れる

■Client PCの仕様 ※H/W仕様は割愛します。

 ・OS: WIndows 10 (64bit)
 ・ブラウザー: chrome バージョン 49.x

■計測方法

 ・Webページを表示後に、以下のjavascriptをブックマークレットにて実行します。

※引用元: 「Web担当者Forum版 ページ速度分析ツール」より

■計測対象サイト

 以下URLで試します。
個人的興味から、国内外のニュースサイトにしました。
http://www.yahoo.co.jp
http://www.bbc.com
http://www.naver.com
http://edition.cnn.com
http://news.baidu.com

ではでは、始めまひょう~

まずは、hostsファイルを書き換える前の表示速度を計ります。
その都度、新規でchromeを立ち上げ、5回計測。

■hostsファイルに書き込む前

 ※いちいちDNSへ問い合わせするはず、と推定。

【表1】

接続先1回目2回目3回目4回目5回目
http://www.yahoo.co.jp2037ms892ms858ms973ms1026ms
http://www.bbc.com4773ms1957ms1861ms2376ms1581ms
http://www.naver.com1083ms958ms752ms755ms774ms
http://edition.cnn.com7067ms5342ms4501ms5120ms4672ms
http://news.baidu.com22399ms2386ms2364ms2566ms2703ms

ここで、hostsファイルに各ドメインのIPアドレスを書いて保存します。

※注1.各ドメインのIPアドレスは、ローカルの仮想マシン(OSはLINUX系)にてwgetコマンド実行時にレスポンスしてくれたサーバのIPアドレスにしました。

※注2.書き込んだwindowsのhostsファイルは、「C:\Windows\System32\drivers\etc\hosts」です。

■hostsファイルに書き込んだ後

※どうだ!これで速くなっただろー?

【表2】

接続先1回目2回目3回目4回目5回目
http://www.yahoo.co.jp1133ms816ms1174ms762ms809ms
http://www.bbc.com4477ms1480ms1432ms1538ms2472ms
http://www.naver.com1105ms853ms803ms780ms749ms
http://edition.cnn.com6422ms6310ms5539ms4972ms4821ms
http://news.baidu.com3955ms5304ms2861ms2529ms2412ms
 
表1と比べ、表示が早くなった箇所だけ、緑色でハイライトを付けました。
速くなったかなぁー・・・・・・・・・

あら?

確か速くなった部分はあるが、これだけだと速くなったとは主張できませんね。
しかも、hostsファイルと関係なく、ただ表示回数をこなすだけで早くなっているようにも見えます。

なんで、思うように改善しない?

調べた結果、以下のことが分かりました。

既にDNS問い合わせ結果がClient PC側でキャッシュされているため、hostsファイルに書き込んだところで大した効果は得難い。

つまり、DNS問い合わせを省くことなんて、知らないところですでにやっています!!

どこでキャッシュされているか?

答え1.OS(今回はWindows 10)
Windowsのコマンドプロンプトにて以下のコマンドを叩くと、キャッシュされたDNS問い合わせ結果が全部表示されます。

 C:> ipconfig /displaydns
※Linux系は、defaultではDNS情報をキャッシュしないんだとか。。

更にさらに

答え2.Browser(今回はChrome)
chromeだと、URLに「chrome://net-internals/#dns」と入力すると、現在キャッシュ中のDNS問い合わせ情報一覧が表示されます。

image04

chromeは賢くキャッシュしてくれる上、更にユーザの行動を予測して事前にサーバから情報を取る!こともするらしい。ので、使えば使うほどWeb表示が早く感じれるかも、ですね。

ただし、キャッシュが原因でWebページがちゃんと表示されない場合もありえるので、
その際は、以下の手順でキャッシュをクリアーしましょう!!

1.Windows OSのDNSキャッシュをクリアー
 コマンドプロンプトにて、以下コマンドを実行する。
 C:> ipconfig /flushdns

2.chromeのDNSキャッシュをクリアー
 ・chromeの「chrome://net-internals/#dns」ページにある”Clear host cache”ボタンをクリック。

まとめ

期待していた結果は得ることができませんでしたが、おかげで裏でブラウザーやOSが何を頑張っているか分かりました。

引き続き実験と施策探しに参ります!!

※ちょっと一言
OSとブラウザー両方でキャッシュしているため、限られたリソースを使っている立場から見ると違和感がありました。同じ目的の機能が重複している・・・

コメント