mozilla

Revision 133032 of DNS プリフェッチの制御

  • Revision slug: Controlling_DNS_prefetching
  • Revision title: DNS プリフェッチの制御
  • Revision id: 133032
  • Created:
  • Creator: RobinEgg
  • Is current revision? No
  • Comment 408 words added, 3 words removed; page display name changed to 'DNS プリフェッチの制御'

Revision Content

{{ fx_minversion_header("3") }}

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

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

背景

DNS による名前解決に必要な帯域幅は小さなものですが、それにかかる時間は非常に大きく、特にモバイル環境では顕著なものとなります。予め名前解決を行っておくことで、例えばユーザーがリンクをクリックした際に、ページが表示されるまでの待ち時間を大きく削減することができ、場合によっては秒単位の効果が現れる場合もあります。

Firefox での実装においては、実際のページコンテンツの取得と並行して DNS による名前解決が行われるため、名前解決に時間がかかっても実際のページコンテンツの取得に遅れが生じることはありません。

特にモバイル環境においては、 DNS プリフェッチによりページの読み込みにかかる時間が劇的に改善されます。例えば、多数の画像が表示されるページにおいて、画像が要求される前に名前解決が行われている場合では読み込み時間が 5% 以上削減されるでしょう。

ブラウザーでのプリフェッチ制御

通常、ユーザーはプリフェッチ機能に対して何ら設定する必要はありません。が、何らかの理由でプリフェッチ機能を無効にしたい場合は、 network.dns.disablePrefetchtrue に設定してください。

また、既定では HTTPS にて読み込まれた文書に対する埋め込みリンクのホスト名は事前に解決されないように設定されています。これを変更するにはnetwork.dns.disablePrefetchFromHTTPS false としてください。

コンテンツでのプリフェッチ制御

Content providers have some control over the prefetching process as well.  This is compatible with how Google Chrome handles DNS prefetching control.

Turning on and off prefetching

First of all, a server can opt out of DNS prefetching by serving content with the x-dns-prefetch-control HTTP header set to "off".

This can also be done from individual documents, using the http-equiv on the meta element, like this:

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

You can reverse this setting by setting content to "on".

Forcing lookup of specific hostnames

The content provider can force the lookup of specific hostnames without providing specific anchors using that hostname by using the link element, like this:

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

In this example, Firefox will pre-resolve the domain name "www.spreadfirefox.com".

Similarly, the link element can be used to resolve hostnames without providing a complete URL, by preceding the hostname with two slashes:

<link rel="dns-prefetch" href="//www.spreadfirefox.com">

Forced prefetching of hostnames might be useful, for example, on the home page of a site to force pre-resolution of domain names that are referenced frequently throughout the site even though they're not used on the home page itself.  This will improve overall site performance even though the performance of the home page may not be affected.

See also

 

Revision Source

<p>{{ fx_minversion_header("3") }}</p>
<p>Firefox 3.5 では <strong>DNS prefetching </strong>が導入されました。これにより、 Firefox は文書中に埋め込まれたアンカーに加え、画像、CSS、JavaScript などの文書内で参照されている外部リソースの URL に対し、予めドメインの名前解決を行います。</p>
<p>このプリフェッチはバックグラウンドで行われるため、実際にリソースが必要となった際には既に名前解決が終了していることになります。これにより、例えばユーザーがリンクをクリックした際の待ち時間を減らすことができます。</p>
<h2>背景</h2>
<p>DNS による名前解決に必要な帯域幅は小さなものですが、それにかかる時間は非常に大きく、特にモバイル環境では顕著なものとなります。予め名前解決を行っておくことで、例えばユーザーがリンクをクリックした際に、ページが表示されるまでの待ち時間を大きく削減することができ、場合によっては秒単位の効果が現れる場合もあります。</p>
<p>Firefox での実装においては、実際のページコンテンツの取得と<strong>並行して</strong> DNS による名前解決が行われるため、名前解決に時間がかかっても実際のページコンテンツの取得に遅れが生じることはありません。</p>
<p>特にモバイル環境においては、 DNS プリフェッチによりページの読み込みにかかる時間が劇的に改善されます。例えば、多数の画像が表示されるページにおいて、画像が要求される前に名前解決が行われている場合では読み込み時間が 5% 以上削減されるでしょう。</p>
<h2>ブラウザーでのプリフェッチ制御</h2>
<p>通常、ユーザーはプリフェッチ機能に対して何ら設定する必要はありません。が、何らかの理由でプリフェッチ機能を無効にしたい場合は、 <code>network.dns.disablePrefetch</code> を <code>true</code> に設定してください。</p>
<p>また、既定では HTTPS にて読み込まれた文書に対する埋め込みリンクのホスト名は事前に解決されないように設定されています。これを変更するには<code>network.dns.disablePrefetchFromHTTPS </code>を <code>false</code> としてください。</p>
<h2>コンテンツでのプリフェッチ制御</h2>
<p>Content providers have some control over the prefetching process as well.  This is compatible with how <a class="external" href="http://dev.chromium.org/developers/design-documents/dns-prefetching" title="http://dev.chromium.org/developers/design-documents/dns-prefetching">Google Chrome handles DNS prefetching control</a>.</p>
<h3>Turning on and off prefetching</h3>
<p>First of all, a server can opt out of DNS prefetching by serving content with the <code>x-dns-prefetch-control </code>HTTP header set to "<code>off</code>".</p>
<p>This can also be done from individual documents, using the <code>http-equiv</code> on the <a class="internal" href="/En/HTML/Element/Meta" title="En/HTML/Element/Meta"><code>meta</code></a> element, like this:</p>
<pre>&lt;meta http-equiv="x-dns-prefetch-control" content="off"&gt;
</pre>
<p>You can reverse this setting by setting <code>content</code> to "<code>on</code>".</p>
<h3>Forcing lookup of specific hostnames</h3>
<p>The content provider can force the lookup of specific hostnames without providing specific anchors using that hostname by using the <a class="internal" href="/en/HTML/Element/link" title="En/HTML/Element/Link"><code>link</code></a> element, like this:</p>
<pre>&lt;link rel="dns-prefetch" href="http://www.spreadfirefox.com/"&gt;
</pre>
<p>In this example, Firefox will pre-resolve the domain name "www.spreadfirefox.com".</p>
<p>Similarly, the link element can be used to resolve hostnames without providing a complete URL, by preceding the hostname with two slashes:</p>
<pre>&lt;link rel="dns-prefetch" href="//www.spreadfirefox.com"&gt;
</pre>
<p>Forced prefetching of hostnames might be useful, for example, on the home page of a site to force pre-resolution of domain names that are referenced frequently throughout the site even though they're not used on the home page itself.  This will improve overall site performance even though the performance of the home page may not be affected.</p>
<h2>See also</h2>
<ul> <li><a class="external" href="http://bitsup.blogspot.com/2008/11/dns-prefetching-for-firefox.html" title="http://bitsup.blogspot.com/2008/11/dns-prefetching-for-firefox.html">DNS Prefetching for Firefox (blog post)</a></li>
</ul>
<p> </p>
Revert to this revision