2026年7月7日
2026年7月7日
W3 Total Cacheでデータベースキャッシュを設定する方法と効果の確かめ方
W3 Total Cacheのデータベースキャッシュは、「一般設定」で有効化して保存方式を選び、「データベースキャッシュ」の画面で除外ルールと有効期間を調整するだけで使い始められます。ただし、保存方式にディスクを選ぶと、環境によってはかえって遅くなることがあります。この記事では、設定の手順に加えて、どの保存方式を選ぶべきか、効果をどう測るか、表示が古いままになったときの対処まで説明します。
データベースキャッシュで何が速くなるのか
WordPressは、ページを表示するたびにMySQL(MariaDB)へ多数のクエリを送ります。データベースキャッシュは、そのクエリの結果を一定時間保存しておき、同じクエリが来たときにデータベースへ問い合わせずに保存済みの結果を返す仕組みです。
効果が出やすいのは、ページキャッシュが効かない場面です。ログイン中のユーザーが見る画面、管理画面、検索結果、WooCommerceのカートや会員ページなどは、ページ全体をキャッシュできないため、データベースへの問い合わせを減らすことが速度に直結します。逆に、ほとんどのアクセスがページキャッシュから返されるサイトでは、体感できる差は小さくなります。
W3 Total Cacheは、データベースキャッシュを有効にすると wp-content/db.php というドロップイン(WordPressが読み込む特別なファイル)を設置し、そこでクエリを横取りして結果を保存します。このファイルの存在が、後述する他プラグインとの競合に関わってきます。
設定前の準備
バックアップを取る
設定自体は管理画面で完結しますが、ドロップインの設置によってサイトが表示されなくなる可能性はゼロではありません。作業前にファイルとデータベースのバックアップを取り、FTPやサーバーのファイルマネージャーで wp-content を操作できることを確かめておきます。
db.phpがすでに存在しないか確認する
wp-content/db.php は1つしか置けません。Query Monitor、HyperDB、LudicrousDBなど、同じドロップインを使うプラグインがすでに設置している場合、W3 Total Cacheは自分のファイルを置けず、データベースキャッシュが動きません。
特にQuery Monitorは、詳しいクエリ情報を取るためにこのファイルを設置することがあります。両方を使いたい場合は、計測のときだけQuery Monitorの db.php を使い、普段はW3 Total Cacheのものにする、といった使い分けが必要です。
保存方式を選ぶ
データベースキャッシュの保存先は、サーバーで使える仕組みによって選択肢が変わります。
- ディスク:どのサーバーでも使えますが、キャッシュをファイルとして読み書きするため、ディスクが遅い共有サーバーではデータベースに直接問い合わせるより遅くなることがあります。W3 Total Cache自身も、ディスクへのデータベースキャッシュには注意を促す表示を出す場合があります。
- Redis / Memcached:メモリ上に保存するため高速です。サーバーにRedisまたはMemcachedが動いており、PHPの拡張モジュール(phpredisやmemcached)が入っている必要があります。
- APCuなどのオペコード系キャッシュ:同じサーバー内のメモリを使います。PHPの拡張が必要で、サーバー構成によっては使えません。
RedisかMemcachedが使えるなら、そちらを選ぶのが基本です。使えない共有サーバーでディスクを選ぶ場合は、次に説明する計測で効果を確かめてから本番で使い続けるかを決めてください。
設定手順
一般設定で有効化する
- 管理画面の「Performance」(パフォーマンス)→「General Settings」(一般設定)を開きます。
- 「Database Cache」(データベースキャッシュ)の欄で有効化のチェックを入れます。
- 保存方式(Database Cache Method)を選びます。サーバーで使えない方式は選択できない状態で表示されます。
- 「Save all settings」(すべての設定を保存)を押します。
保存後、キャッシュの削除を求める通知が出たら、その通知からキャッシュを空にします。画面の表記は日本語化の状況やバージョンによって変わります(2026年10月現在)。
Redis・Memcachedの接続先を設定する
RedisかMemcachedを選んだ場合は、「Performance」→「Database Cache」の画面に接続先の入力欄が表示されます。同じサーバーで動かしているなら、Redisは 127.0.0.1:6379、Memcachedは 127.0.0.1:11211 が一般的な値です。入力欄の近くにある接続テストのボタンで、接続できるかを確かめてから保存します。
詳細設定を調整する
「Performance」→「Database Cache」の画面では、次のような項目を調整できます。
- ログインユーザーのクエリをキャッシュしない設定:既定で有効になっていることが多い項目です。管理画面での編集内容がすぐ反映されないと困る場合は有効のままにします。会員サイトなどでログインユーザーの表示を速くしたい場合は無効にする選択肢もありますが、表示が古くなる問題が出ないかを確認しながら進めます。
- キャッシュの最大有効期間:長くすると効果は上がりますが、更新内容が反映されるまでの時間も延びます。在庫や予約数のように頻繁に変わる情報があるサイトでは短めにします。
- キャッシュしないクエリの指定:特定の文字列を含むクエリを除外できます。WooCommerceの在庫やセッションのように、常に最新の値が必要なテーブルへのクエリはここで除外します。
wp_woocommerce_sessions
wp_wc_product_meta_lookup
上はテーブル名で除外する例です。テーブル接頭辞を wp_ 以外にしている場合は、自分のサイトの接頭辞に置き換えてください。
効果を確かめる
設定したら、本当に速くなったかを数字で確かめます。
- ページのソースのコメント:W3 Total Cacheは、ページのHTMLの末尾にキャッシュの状況をコメントとして出力することがあります。ログアウトした状態でページのソースを表示し、データベースキャッシュに関する行で、何件のクエリがキャッシュから返されたかを確認します。
- 管理画面やログイン後のページの体感:ページキャッシュが効かない画面で、有効化前と後の表示時間を比べます。
- サーバーの負荷:アクセスが多いサイトでは、MySQLのCPU使用率や接続数が下がっているかをサーバーの管理画面で見ます。
ディスク方式で効果が見られない、あるいは遅くなった場合は、データベースキャッシュは無効にして、ページキャッシュやオブジェクトキャッシュの設定に力を入れるほうが効果的です。
表示が古い・サイトが表示されないときの対処
更新した内容が反映されない場合は、まず管理バーの「Performance」メニューからすべてのキャッシュを削除します。WP-CLIが使える環境では、次のコマンドでも削除できます。
wp w3-total-cache flush all
削除しても同じ症状が繰り返す場合は、該当するクエリをキャッシュの対象から外すか、有効期間を短くします。
有効化した直後に画面が真っ白になった場合は、FTPなどで wp-content/db.php の名前を変更すると、データベースキャッシュを通さない状態に戻ります。その後、管理画面に入れるようになったらデータベースキャッシュを無効にして保存します。W3 Total Cacheを無効化・削除したあとも db.php が残っていると、プラグインがないのにドロップインだけが読み込まれる状態になるため、ファイルが消えているかも確認しておきます。
まとめ
- データベースキャッシュは、ページキャッシュが効かないログイン中の画面や管理画面で効果が出やすい。
- 有効化の前にバックアップを取り、
wp-content/db.phpを使う他のプラグインがないかを確認する。 - 保存方式はRedisかMemcachedが基本。ディスク方式は効果を計測してから使い続けるかを決める。
- 頻繁に変わるデータへのクエリは除外し、有効期間はサイトの更新頻度に合わせる。
- 表示が古いときはキャッシュを削除し、画面が真っ白になったら
db.phpの名前を変えて切り戻す。