2026年5月21日
2026年5月21日
WordPressキャッシュプラグインの設定方法(W3 Total Cache・LiteSpeed Cache・WP Rocket)
キャッシュは、一度作ったページやデータを保存しておき、次のアクセスで使い回す仕組みです。WordPress は通常、アクセスのたびに PHP を動かし、データベースに問い合わせてページを組み立てます。キャッシュを使うとこの処理を省けるので、表示が速くなり、サーバーの負荷も下がります。
この記事の設定と確認の結果は、2026年11月時点の WordPress 7.1、W3 Total Cache 2.11、LiteSpeed Cache 7.9、Redis Object Cache 3.0、WooCommerce 11.2 で確かめたものです(WP Rocket は有料のため、公式ドキュメントで確認した内容です)。
キャッシュの種類
| 種類 | 保存するもの | 主な手段 |
|---|---|---|
| ページキャッシュ | ページの HTML 全体 | キャッシュプラグイン、サーバーのキャッシュ機能 |
| ブラウザキャッシュ | 画像・CSS・JavaScript を閲覧者のブラウザに保存 | HTTP ヘッダー(プラグインや .htaccess で設定) |
| オブジェクトキャッシュ | データベースの問い合わせ結果など | Redis・Memcached と専用プラグイン |
| トランジェント | プラグインやテーマが保存する一時データ | Transients API(set_transient() など) |
表示速度にいちばん効くのはページキャッシュです。ログインしていない閲覧者には、保存済みの HTML をそのまま返します。
プラグインの選び方
- サーバーが LiteSpeed(OpenLiteSpeed を含む)の場合: LiteSpeed Cache を使います。ページキャッシュはサーバー側で動くため、LiteSpeed のサーバー(または QUIC.cloud の CDN)でないと使えません。Apache や Nginx では、画像の最適化や CSS・JavaScript の圧縮などの一般機能だけが使えます。
- Apache・Nginx の場合: 無料なら W3 Total Cache や WP Super Cache、有料なら WP Rocket が候補です。
- レンタルサーバーのキャッシュ機能がある場合: サーバー側のキャッシュ機能が使えるなら、まずそれを使い、プラグインのページキャッシュと二重にならないようにします。
ページキャッシュのプラグインは1つだけにします。2つ以上を同時に有効にすると、どちらのキャッシュが返っているのか分からなくなり、更新が反映されない原因になります。比較は WordPressキャッシュプラグインの比較 を参照してください。
W3 Total Cacheの基本設定
- 「プラグイン」→「プラグインを追加」で「W3 Total Cache」を検索し、インストールして有効化します。
- 管理画面の「パフォーマンス」→「一般設定」を開きます。
- 「ページキャッシュ」の項目で有効にし、方式に「ディスク: 強化」を選びます。
- 「すべての設定を保存」を押します。
「ディスク: 強化」では、キャッシュした HTML を wp-content/cache/page_enhanced/ に保存し、.htaccess に書き込んだ規則で Apache から直接返します。そのため W3 Total Cache は、wp-config.php に define('WP_CACHE', true); を、.htaccess にキャッシュ用の規則を書き込みます(試した環境でも、有効化と設定の後に両方のファイルに追記されていました)。wp-config.php を 440 などの読み取り専用にしている場合は、設定の間だけ書き込みを許可します。
試したところ、ログインしていない状態で同じページを開くと、2回目以降はキャッシュから返り、HTML の末尾に次のようなコメントが付きました。
<!-- Performance optimized by W3 Total Cache. ...
Page Caching using Disk: Enhanced
Served from: localhost @ 2026-11-10 10:30:36 by W3 Total Cache -->
ログイン中のユーザーにはキャッシュを返さない設定が初期状態で有効です。キャッシュを消すときは、管理バーの「パフォーマンス」→「すべてのキャッシュを消去」を使うか、WP-CLI で次のコマンドを実行します。
wp w3-total-cache flush all
詳しい設定は W3 Total Cacheの設定方法 にまとめています。
LiteSpeed Cacheの基本設定
- 「プラグイン」→「プラグインを追加」で「LiteSpeed Cache」を検索し、インストールして有効化します。
- 管理画面の「LiteSpeed Cache」→「キャッシュ」を開きます。
- 「キャッシュを有効にする」をオンにして保存します。
LiteSpeed のサーバーでページがキャッシュから返ると、応答ヘッダー X-LiteSpeed-Cache に hit が付きます。「ログインしたユーザーをキャッシュ」は初期状態でオンで、ログイン中のユーザーにはユーザーごとの別のキャッシュ(プライベートキャッシュ)が使われます。キャッシュから外したい URL は、同じ画面の「除外」タブの「URIs をキャッシュしない」に書きます。
キャッシュをすべて消すときは、管理バーのメニューか、WP-CLI で次のコマンドを使います。
wp litespeed-purge all
詳しくは LiteSpeed Cacheの設定方法 を参照してください。
WP Rocketの基本設定
WP Rocket は有料のプラグインで、公式サイトで購入してダウンロードした ZIP ファイルを「プラグインを追加」→「プラグインのアップロード」から入れます。公式ドキュメントによると、ページキャッシュは有効化した時点で自動的に有効になります。設定画面は「設定」→「WP Rocket」で、キャッシュから外す URL や Cookie は「Advanced Rules」の項目で指定します。
設定の詳細は WP Rocketの設定方法 を参照してください。
キャッシュしてはいけないページを外す
カート、決済、会員ページなど、閲覧者ごとに内容が変わるページをキャッシュすると、ほかの人のカートの中身が表示されるといった問題が起きます。
WooCommerceのページ
WooCommerce は、カート・決済(チェックアウト)・マイアカウントのページで定数 DONOTCACHEPAGE を定義します(WooCommerce 11.2 のソースで確認)。W3 Total Cache、LiteSpeed Cache、WP Rocket はいずれもこの定数を見てページをキャッシュしないので、通常は追加の設定なしでこれらのページは外れます。
WooCommerce の公式ドキュメントは、念のためキャッシュプラグインの設定でもカート・マイアカウント・チェックアウトのページを除外し、次の Cookie を持つ閲覧者にはキャッシュを返さないよう勧めています。
woocommerce_cart_hashwoocommerce_items_in_cartwp_woocommerce_session_
独自のページを外す
フォームの確認画面など、自分で作ったページをキャッシュから外すときも、同じ定数を使えます。子テーマの functions.php などに書きます。
<?php
// スラッグが contact-confirm の固定ページをページキャッシュの対象から外す
add_action( 'template_redirect', function () {
if ( is_page( 'contact-confirm' ) && ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true );
}
} );
試したところ、W3 Total Cache ではこのページのキャッシュファイルが作られず、HTML 末尾のコメントに「DONOTCACHEPAGE constant is defined」と表示されました。
ただし、この定数を見るのは WordPress の中で動くプラグインだけです。Nginx の FastCGI キャッシュや CDN など、WordPress の外でキャッシュしている場合は、そちらの設定で URL を除外します。
Redisでオブジェクトキャッシュを使う
オブジェクトキャッシュは、データベースの問い合わせ結果などをメモリに保存します。ページキャッシュが効かないログイン中の画面や管理画面、WooCommerce のカートなどでも効果があります。VPS など、Redis をインストールできるサーバーで使います(Ubuntu の例)。
sudo apt install redis-server php-redis
sudo systemctl enable --now redis-server
redis-cli ping # PONG と返れば動いている
wp-config.php の「That's all, stop editing!」(日本語版では「編集が必要なのはここまでです」)の行より前に、接続先を書きます。
<?php
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PREFIX', 'example_com:' ); // 1台の Redis を複数サイトで使うときはサイトごとに変える
次に、プラグイン「Redis Object Cache」をインストールして有効化し、オブジェクトキャッシュを有効にします(WP-CLI の例)。
wp plugin install redis-cache --activate
wp redis enable
wp redis status
試したところ、wp redis status で Status: Connected と表示され、wp-content/object-cache.php(ドロップイン)が置かれました。この状態ではトランジェントもデータベースではなく Redis に保存されます(wp transient type で確認できます)。PHP の Redis 拡張(php-redis)がない環境でも、プラグインに含まれる Predis で接続できました。
キャッシュを消すときは wp cache flush を使います。詳しくは WordPressでRedisキャッシュを設定する方法 を参照してください。
重い処理の結果をトランジェントで保存する
プラグインやテーマで、外部 API の取得や重いクエリを毎回実行している場合は、結果をトランジェントに保存すると負荷を減らせます。
<?php
/**
* 閲覧数(カスタムフィールド _myprefix_views)の多い投稿のIDを返す(1時間キャッシュ)
*/
function myprefix_get_popular_post_ids( $limit = 5 ) {
$limit = absint( $limit );
$cache_key = 'myprefix_popular_' . $limit;
$ids = get_transient( $cache_key );
if ( false !== $ids ) {
return $ids;
}
$ids = get_posts(
array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => $limit,
'meta_key' => '_myprefix_views',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'fields' => 'ids',
'no_found_rows' => true,
)
);
set_transient( $cache_key, $ids, HOUR_IN_SECONDS );
return $ids;
}
// 投稿を保存したらキャッシュを消す
add_action( 'save_post_post', function ( $post_id ) {
if ( wp_is_post_revision( $post_id ) || wp_is_post_autosave( $post_id ) ) {
return;
}
foreach ( array( 5, 10 ) as $limit ) {
delete_transient( 'myprefix_popular_' . $limit );
}
} );
トランジェントの使い方は WordPressプラグインでトランジェントを使う方法 で詳しく説明しています。
キャッシュが効いているか確かめる
ページキャッシュは、ログインしていない状態で確かめます。管理画面にログインしたブラウザでは、キャッシュされていないページが表示されることが多いからです。
# 2回続けて取得し、応答ヘッダーを比べる
curl -sI https://example.com/
curl -sI https://example.com/
# HTML の末尾(W3 Total Cache などのコメント)を見る
curl -s https://example.com/ | tail -n 3
- LiteSpeed Cache: 2回目の応答に
X-LiteSpeed-Cache: hitがあればキャッシュから返っています。 - W3 Total Cache: HTML 末尾のコメントの「Served from」の時刻が、2回目以降も1回目と同じならキャッシュから返っています。
- CDN を使っている場合は、CDN の応答ヘッダー(Cloudflare なら
cf-cache-status)も確認します。
トランジェントとオブジェクトキャッシュは WP-CLI で確認できます。
wp transient list --human-readable # データベースに保存されたトランジェントの一覧
wp transient delete --expired # 期限切れのトランジェントを削除
wp cache type # 使われているオブジェクトキャッシュの種類
運用で気をつけること
- 更新後はキャッシュを消す: テーマやプラグインを更新した後、表示が変わらないときはキャッシュを消してから確かめます。
- ページ内のノンス: キャッシュされた HTML には、作られた時点のノンス(フォームや Ajax の確認用の値)が残ります。ノンスの有効期間(標準で最長24時間)より長くキャッシュすると、フォームの送信などが失敗することがあります。
- CSS・JavaScript の圧縮や結合: キャッシュプラグインの最適化機能で表示が崩れたら、その機能だけを止めて原因を切り分けます。