2026年5月20日

2026年5月20日

WordPressキャッシュプラグインの選び方と設定(WP Super Cache・W3TC・WP Rocket)

WordPress は、ページを表示するたびに PHP を動かし、データベースから記事や設定を読み出して HTML を組み立てます。キャッシュプラグインは、組み立てた HTML をファイルなどに保存しておき、次からは保存したものを返すことで、この処理を省きます。アクセスが多いサイトや、サーバーの応答(TTFB)が遅いサイトで効果があります。

この記事では、キャッシュの種類と、代表的な3つのプラグインの基本設定、キャッシュしてはいけないページの除外方法を説明します。プラグインの仕様は2026年11月時点の公式情報で確認しています。

キャッシュの種類

種類 何を保存するか 主な手段
ページキャッシュ 組み立て済みの HTML。PHP とデータベースの処理を省ける WP Super Cache、W3 Total Cache、WP Rocket、LiteSpeed Cache など
ブラウザキャッシュ CSS・JS・画像を訪問者のブラウザに保存させる Cache-Control/Expires ヘッダー(Web サーバーの設定やプラグイン)
オブジェクトキャッシュ データベースの問い合わせ結果などを Redis や Memcached に保存する Redis Object Cache などのプラグインとサーバー側の Redis
CDN キャッシュ 静的ファイル(設定によっては HTML も)を CDN のサーバーに保存する Cloudflare など

ページキャッシュのプラグインは1つだけ使ってください。2つ入れると、どちらのキャッシュが返っているのか分からなくなり、wp-config.php の WP_CACHE や .htaccess の書き換えが衝突します。サーバーが LiteSpeed の場合は LiteSpeed Cacheの設定 を、レンタルサーバーが独自のキャッシュ機能を持つ場合はその説明を先に確認してください。

オブジェクトキャッシュとトランジェントの関係は オブジェクトキャッシュとトランジェントの違い で説明しています。

どのプラグインを選ぶか

プラグイン 料金 特徴
WP Super Cache 無料 設定項目が少ない。ページキャッシュが中心
W3 Total Cache 無料(有料版あり) ページ・ブラウザ・オブジェクト・データベースのキャッシュや縮小など項目が多い
WP Rocket 有料 有効化した時点で基本的なページキャッシュが動く。ファイル最適化などの機能が多い

まずページキャッシュだけを設定し、効果を確かめてから、縮小(Minify)や JavaScript の遅延などの最適化を1つずつ試すのが安全です。最適化の機能はサイトの表示を崩すことがあります。

WP Super Cache を設定する

2026年11月時点の WP Super Cache(3.1 系)は、WordPress 6.8 以上、PHP 7.4 以上が必要です。パーマリンクが「基本」以外になっていることと、wp-content に Web サーバーが書き込めることも条件です。

  1. 「プラグイン」→「新規プラグインを追加」で WP Super Cache をインストールして有効化します。
  2. 「設定」→「WP Super Cache」の「簡単」タブで「キャッシング利用」を選んで保存します。wp-config.php に define( 'WP_CACHE', true ); が追加されます(書き込めない場合は手で追加します)。
  3. 同じタブの「キャッシュをテスト」でトップページを2回取得し、時刻が一致すればキャッシュが効いています。
  4. 「高度な設定」タブで、次の項目を確認します。
項目 設定
キャッシュ配信方法 Simple(PHP で配信、推奨)か Expert(Apache の mod_rewrite で配信。.htaccess を書き換えるので、誤るとサイトが表示されなくなることがある)
キャッシュ制限 「ログイン中のユーザーに対してはキャッシュを無効化する。」(推奨)を選ぶ

画面の表記は2026年11月時点の 3.1.5 の日本語訳です。英語の画面では「Caching On」「Cache Delivery Method」「Disable caching for logged in visitors.」です。

ログアウトした状態でレスポンスヘッダーを見ると、PHP で配信されたキャッシュには WP-Super-Cache ヘッダーが付きます。

curl -sI https://example.com/ | grep -i wp-super-cache

Expert モードで Apache が直接ファイルを返している場合、このヘッダーは付きません。その場合は「キャッシュをテスト」で確認します。詳しい設定は WP Super Cacheの設定 を参照してください。

W3 Total Cache を設定する

W3 Total Cache は項目が多いので、最初は「Performance」→「General Settings」で Page Cache だけを有効にします。

項目 設定の考え方
Page Cache の方式 共用サーバーでは「Disk: Enhanced」。Redis や Memcached を使える VPS ではそれらも選べる
Minify 最初は無効。有効にする場合は、全ページの表示と動作を確認する。CSS・JS の結合は特に崩れやすい
Browser Cache 有効にすると、静的ファイルに Cache-Control などのヘッダーを付ける
Object Cache/Database Cache ディスクに保存する方式では、かえって遅くなることがある。Redis などが使える場合に検討する

W3 Total Cache は、標準でログイン中の利用者にはページキャッシュを返しません。詳しくは W3 Total Cacheの設定 を参照してください。

WP Rocket を設定する

WP Rocket は有効化した時点でページキャッシュが動き、公式ドキュメントによれば、キャッシュの有効期間(Cache Lifespan)は初期値10時間、モバイル用のキャッシュは初期状態で有効です。

  • Cache Lifespan: WordPress のノンス(フォームなどで使う有効期限つきの確認値)は、生成から12〜24時間で無効になります。キャッシュされたページのノンスが期限切れにならないよう、公式は12時間未満にすることをすすめています。初期値の10時間のままで構いません。
  • ログイン中の利用者のキャッシュ: 会員制サイトなど、ログイン中の利用者にもキャッシュが必要な場合だけ有効にします。
  • ファイルの最適化(縮小・JavaScript の遅延など): 1つずつ有効にし、そのたびに表示と動作を確認します。

ホスティング会社によっては、独自のキャッシュを使うために WP Rocket のページキャッシュが無効化されます。その場合は最適化の機能だけが働きます。

キャッシュが効いているかを確かめる

キャッシュの効果は、ログアウトした状態(またはシークレットウィンドウ)で確かめます。ログイン中は多くのプラグインがキャッシュを返さないためです。

# 応答時間(TTFB)を3回測る
for i in 1 2 3; do
  curl -s -o /dev/null -w '%{time_starttransfer}\n' https://example.com/
done

1回目より2回目以降が速くなり、ページのソースやヘッダーにプラグインの印(WP Super Cache なら WP-Super-Cache ヘッダー)があればキャッシュが返っています。CDN を使っている場合は CDN のヘッダー(Cloudflare なら cf-cache-status)も確認してください(CloudflareのCDN設定)。

キャッシュしてはいけないページを除外する

カート、決済、マイアカウント、会員専用ページなど、利用者ごとに内容が変わるページをキャッシュすると、別の人の情報が表示されるおそれがあります。

WooCommerce の場合

WooCommerce は、カート・チェックアウト・マイアカウントのページで DONOTCACHEPAGE 定数を定義し、キャッシュしないためのヘッダーを送ります。主要なキャッシュプラグインはこの定数を見てキャッシュしません。ただし、プラグインの設定でこれらのページの除外を外していないか、表示を確認してください。

自作のページを除外する

ページキャッシュのプラグインは、多くが DONOTCACHEPAGE 定数を尊重します。ページを出力する前に定義します。nocache_headers() はブラウザや CDN 向けのヘッダーを送る関数で、プラグインのページキャッシュを止めるとは限らないので、両方を使います。

<?php
/**
 * 特定の固定ページをページキャッシュの対象から外す。
 * スラッグ 'members' と 'mypage' は例。
 */
add_action( 'template_redirect', function (): void {
	if ( ! is_page( array( 'members', 'mypage' ) ) ) {
		return;
	}
	if ( ! defined( 'DONOTCACHEPAGE' ) ) {
		define( 'DONOTCACHEPAGE', true );
	}
	nocache_headers();
} );

URL のパターンで除外したい場合は、プラグインの設定画面(WP Super Cache の「高度な設定」タブの「受け付けるファイル名と除外する URI」、W3 Total Cache の Page Cache の「Never cache the following pages」、WP Rocket の「Never Cache URL(s)」など)に指定します。

更新時のキャッシュ削除

3つのプラグインとも、投稿を更新するとその投稿と関連するページのキャッシュを自動で削除します。外部からデータを書き換えた場合など、自分で削除したいときは各プラグインの関数を呼びます。関数が無い環境でもエラーにならないよう、function_exists() で確かめてから使います。

<?php
/**
 * 投稿 ID を指定して、使っているキャッシュプラグインのキャッシュを削除する。
 */
function mysite_flush_post_cache( int $post_id ): void {
	// W3 Total Cache
	if ( function_exists( 'w3tc_flush_post' ) ) {
		w3tc_flush_post( $post_id );
	}
	// WP Rocket(投稿と、関連するカテゴリー・タグの一覧も削除される)
	if ( function_exists( 'rocket_clean_post' ) ) {
		rocket_clean_post( $post_id );
	}
	// WP Super Cache
	if ( function_exists( 'wpsc_delete_post_cache' ) ) {
		wpsc_delete_post_cache( $post_id );
	}
}

save_post にこの関数を付ける必要は通常ありません。プラグインが同じ処理をすでに行っています。WP-CLI からのデータ更新や、REST API を経由しない一括書き換えのあとに呼ぶ、といった使い方をします。

ブラウザキャッシュを Web サーバーで設定する

プラグインを使わずに、Apache の mod_expires で静的ファイルの有効期限を付ける例です。サイトの .htaccess(または VirtualHost の設定)に書きます。

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 30 days"
    ExpiresByType application/javascript "access plus 30 days"
    ExpiresByType image/webp "access plus 30 days"
    ExpiresByType image/png "access plus 30 days"
    ExpiresByType image/jpeg "access plus 30 days"
</IfModule>

WordPress はテーマやプラグインの CSS・JS の URL に ?ver= を付けるので、ファイルを更新すると URL が変わり、古いキャッシュは使われません。W3 Total Cache の Browser Cache や WP Rocket を使う場合は、同じ設定を二重に書かないようにしてください。

うまくいかないとき

症状 確認すること
キャッシュが効かない ログイン中に確かめていないか。wp-config.php に WP_CACHE があるか。ほかのキャッシュプラグインやサーバーのキャッシュと重なっていないか
更新が反映されない CDN やサーバーのキャッシュが残っていないか。プラグインの「キャッシュを削除」を実行する
表示が崩れる・ボタンが動かない 縮小・結合・JavaScript の遅延を無効にして1つずつ戻す
フォームの送信が失敗する キャッシュされたページのノンスが古い。フォームのページを除外するか、有効期間を12時間未満にする
他人の情報が見える すぐに該当ページを除外し、キャッシュを全削除する

まとめ

  • ページキャッシュのプラグインは1つに絞り、まずページキャッシュだけを有効にして効果を確かめます。
  • 確認はログアウトした状態で、ヘッダーと応答時間を見ます。
  • 利用者ごとに内容が変わるページは DONOTCACHEPAGE やプラグインの除外設定で外します。WooCommerce の主要ページは WooCommerce 自身が除外します。
  • 最適化の機能(縮小・結合・遅延)は1つずつ有効にし、表示と動作を確認します。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲