Help us understand the problem. What is going on with this article?

DNS Prefetch - High Performance Web 2015

More than 3 years have passed since last update.

DNS

HTTP のリクエストも実際は、サーバとの TCP 接続の確立が必要になる。
そのためには、ホストを DNS で名前解決しないといけない。

この DNS もチューニングが進んでいくと気になる存在になる。
特にクライアントが DNS を設定している場合は、それ自体を速くするみたいなことはしにくい。みんなが 8.8.8.8 にしているとも限らないし、Web アプリというレイヤで見ると手を入れにくい部分だった。

DNS Prefetch

最近のブラウザは、例えばページにリンクが埋め込まれていれば、そのリンクのドメインを先に解決しておいてくれる。つまり、リンクをクリックした時点では、すでに名前解決が行われている状態にできる訳だ。

ドメインの解決は、パケットが飛ぶ訳だけどそのペイロードは Web の中で言えば結構小さい部類だし、結果は TTL の間はキャッシュされるのですぐ次のページで使われなかったとしても、そこまでデメリットにはならない。

これはデフォルトで行われているので、その恩恵に授かるわけだけど、一応 opt-out もできる。

クライアント側からすればブラウザのオプションなどでオフにする。
コンテンツ側からなら、ヘッダに x-dns-prefetch-control を送る。
もしくは、 meta タグに書く。

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

ちなみにデフォルトでは HTTPS のページでは DNS-Prefetch されない。

DNS Prefetch Control

しかし、これはページに埋め込まれたものに対してしか行われない。

例えばログイン画面の次はメインページに遷移することが多いだろう。
そこでログイン画面にいる間に、ログイン画面では使わないがメインページで使うコンテンツのドメインなどを先に解決しておけると、次のページでのコンテンツ取得にも活かせる。

よく使う CDN などのドメインを投機的に解決しておくには、Link タグの API を使う。

Firefox と Chrome は少なくとも対応している模様。

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

DNS の解決が遅いことがボトルネックになるレベルまでチューニングできているなら、考えてみると良いと思う。

link

see also

  • prebrowsing
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away