PingdomGTmetrix、またはGoogle PageSpeed Insightsのようなツールを使ってサイトを監視していると、「Serve Static Content From a Cookieless Domain(Cookieフリードメインから静的コンテンツを配信してください)」という旨の推奨メッセージに遭遇することがあります。

基本的に、画像、JavaScript、CSSのようなコンテンツを配信する際には、HTTP Cookieを送信する必要はありません。サーバーがドメインに対してCookieを設定すると、そのドメインに対するすべてのHTTPリクエストにそのCookieが含まれます。

この推奨メッセージは、リクエストの多いサイトでよく見られ、Cookieを排除するCDNサービスを利用するか、Cookieの配信に別のドメイン(およびサブドメイン)を設定して解決できます。

この推奨メッセージは、ツールやソフトウェアによって異なります。

  • 「Serve the following static resources from a domain that doesn’t set cookies(Cookieが設定されていないドメインから次の静的コンテンツを配信してください)」
  • 「Serve static content from a cookieless domain(Cookieフリードメインから静的コンテンツを配信してください)」
Serve static content from a cookieless domain
Serve static content from a cookieless domain

上記の注意点を踏まえて、Cookie配信用のドメインを別途設定する場合には、以下の手順に従ってください。

「Serve Static Content From a Cookieless Domain」警告への対処方法

「Serve Static Content From a Cookieless Domain」警告への対処方法は、CDNを使用するか、WordPressサイトの設定を変更します。

  1. CDNを使用する
  2. WordPressサイトの設定を変更する

1. CDNを使用する

最も簡単な方法は、Cookieを無視して削除できる機能を持つCDNサービスを使用すること。これにより、クライアントがSet-Cookieレスポンスヘッダーを受け取るのを回避することができます。KeyCDNはこの機能を提供しており、デフォルトで以下2つのオプションが有効になっています。サイトを別のサブドメインに移して静的アセットを配信する設定をいじらなくても済む、簡単な代替手段です。

CDNのCookie削除設定
CDNのCookie削除設定

注)Cloudflareのネットワークを介して配信されているリソースのCookieを無効にすることはできません。Cloudflareはヘッダーに独自のセキュリティCookieを含めるため(非常に軽量でパフォーマンスへの影響はごくわずか)、Cloudflareを利用している場合、この推奨メッセージを解消する方法はありません。

2. WordPressサイトの設定を変更する

2つ目の方法として、別のドメインまたはサブドメインから静的アセットを配信するようにWordPressサイトを再設定します。注)domain.comなどの最上位ドメインを利用する場合は、別のドメインを使用する必要があります。 www.domain.comの場合は、「static.domain.com」のようなサブドメインを設定するだけでOKです。以下は、www.domain.comの例です。

  1. ファイルの配信元となるサブドメインを作成する(例:static.domain.com)
  2. サブドメインのDNSレコードをメインドメインに紐付くCNAMEとして設定する
  3. wp-config.phpファイルを編集して、サブドメインを/wp-contentディレクトリに紐付ける
    define("WP_CONTENT_URL", "http://static.domain.com"); 
    define("COOKIE_DOMAIN", "domain.com");