読者です 読者をやめる 読者になる 読者になる

ウェブコンテンツ

ソフトウェア関連のTipsをまとめています。

自動挿入されるDNSプリフェッチ用コードを削除する方法

WordPress

スポンサーリンク

CMS「WordPress」で自動挿入されるDNSプリフェッチ用コードを削除する方法に関する内容

DNSプリフェッチ用コードって何?

サイト内の外部コンテンツを高速表示するために自動的に挿入されるメタタグのことです。

<link rel='dns-prefetch' href='//ajax.googleapis.com' />
<link rel='dns-prefetch' href='//s0.wp.com' />

WordPress のバージョン4.6からDNSプリフェッチ機能が実装され外部ドメインの先読みができるようになりましたが、この機能を実現するためにhead部にメタタグが自動的に挿入されるようになりました。

(参考:Version 4.6 - WordPress Codex 日本語版

削除した方が良いの?

個人ウェブサイトでは効果が薄く、場合によっては無駄なため特に必要性を感じないのであれば削除した方が良いでしょう。

DNSプリフェッチはサイト内で使用されている外部コンテンツ、例えば「アクセス解析用のプログラム」や「CDN配信のjQueryライブラリ」の取得に必要なDNSルックアップ(名前解決)を先に行うことで取得時間を短縮するための技術です。

一見何の問題もない、むしろ使用すべきと思える技術ですが、DNSルックアップ一回に掛かる時間は数十ミリ秒程度でページ全体でも0.1秒に満たない時間で行うことができます。

また、一度行われたDNSルックアップの情報は24時間程度はキャッシュされるためネットサーフィンの最初でもない限りDNSルックアップはそれほど行われません。

では、どのようなサイトの場合は使用すべきかというと「外部コンテンツを大量に使用しているサイト」もしくは「国外からのアクセスが多いサイト」です。

Flickr や Googleフォット などの画像を大量に利用していサイトの場合は、たとえ数十ミリ秒程度で終わる処理でも何百、何千となれば無視できない時間となります。塵も積もれば山となるです。

また、DNSルックアップの時間はサーバとの距離も関係してくるため、国外からのアクセスの場合は国内に比べ時間が掛かります。

そのため、外部コンテンツを大量に使用しておらず、国外からのアクセスも少ないサイトの場合はDNSプリフェッチ用コードを削除した方が良いでしょう。DNSプリフェッチの処理が必要となる訳ですから。

削除する方法

DNSプリフェッチ用コードを削除するには「functions.php」にフィルタ用のコードを挿入する必要があります。失敗するとサイトが表示できなくなる危険性があるので、心配な方はプラグインの使用をおすすめします。

管理画面 → 外観 → テーマ編集 → functions.php に移動し、次のコードを一番下の「?>」の上に記入する。


add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );
function remove_dns_prefetch( $hints, $relation_type ) {
    if ( 'dns-prefetch' === $relation_type ) {
        return array_diff( wp_dependencies_unique_hosts(), $hints );
    }

    return $hints;
}

プラグイン版

functions.phpの内容をプラグイン化したものです。次のリンクからプラグインをダウンロードして、あなたのWordpressに追加してください。

ダウンロード