wp cache flush コマンド情報まとめ
ターミナルの wp cache flush コマンドについて、キャッシュの種類と対応範囲、関連コマンドとの使い分け、AIエージェントが実行した場合の注意点を紹介しています。
wp cache flush とは
wp cache flush(WP-CLI cache flush)は、WordPress のオブジェクトキャッシュを全削除する WP-CLI コマンドです。
WordPress が内部で使用する WP_Object_Cache に蓄積されたキャッシュデータを一括でクリアします。
Redis や Memcached などの永続的なオブジェクトキャッシュが導入されている環境では、それらのキャッシュストアもあわせてフラッシュされます。
WordPress のキャッシュの種類と対応範囲
WordPress のキャッシュは複数の層に分かれており、wp cache flush が対応する範囲は限られています。
| キャッシュの種類 | 説明 | wp cache flush で削除できるか |
|---|---|---|
| オブジェクトキャッシュ(メモリ内) | リクエスト単位でメモリに保持される一時キャッシュ。リクエスト終了とともに消える | ○(削除されるが次回リクエストで自動再生成される) |
| 永続オブジェクトキャッシュ(Redis / Memcached) | Redis や Memcached に保存されるキャッシュ。リクエストをまたいで保持される | ○(対象のキャッシュストア全体がフラッシュされる) |
| トランジェント(DB) | wp_options テーブルに保存される期限付きキャッシュ | △(永続キャッシュ導入時はオブジェクトキャッシュに統合されるため削除されるが、未導入時のDB保存分は削除されない) |
| ページキャッシュ(プラグイン) | W3 Total Cache・WP Super Cache などが生成する静的 HTML ファイルのキャッシュ | ×(プラグイン固有のコマンドや管理画面から削除する必要がある) |
| リライトルール | WordPress のパーマリンク設定に基づくルール | ×(wp rewrite flush を使う) |
ページキャッシュやリライトルールには wp cache flush が効かないため、問題が解消しない場合は後述の関連コマンドを組み合わせてください。
よく使う組み合わせ
オブジェクトキャッシュをフラッシュする(基本)
# オブジェクトキャッシュを全削除する
wp cache flush
# 成功時の出力例
# Success: The cache was flushed.
オプションは不要で、コマンド単体で実行できます。
Redis や Memcached が有効な環境では、それらのキャッシュストア全体がフラッシュされます。共有の Redis インスタンスを使っている場合は他のアプリケーションのキャッシュも巻き込む可能性があるため、環境を確認してから実行してください。
デプロイ後にキャッシュをまとめてクリアする
# オブジェクトキャッシュ・トランジェント・リライトルールをまとめてクリアする
wp cache flush
wp transient delete --all
wp rewrite flush
# W3 Total Cache を使っている場合はページキャッシュも削除する
wp w3-total-cache flush all
デプロイスクリプトに組み込む場合は、オブジェクトキャッシュだけでなくトランジェントとリライトルールもあわせてクリアするのが一般的なベストプラクティスです。
ページキャッシュプラグインを導入している場合はそれぞれのプラグインが提供する WP-CLI コマンドも確認してください。
キャッシュの状態を確認してからフラッシュする
# オブジェクトキャッシュの種類を確認する
wp eval 'echo wp_cache_get_last_changed("posts");'
# トランジェントの件数を確認してからまとめて削除する
wp option list --search="_transient_*" --format=count
wp transient delete --all
# リライトルールを確認してからフラッシュする
wp rewrite list
wp rewrite flush --hard
何が蓄積されているかを事前に確認してから削除することで、キャッシュクリアの効果を把握しやすくなります。
関連コマンド
キャッシュ操作には wp cache flush 以外にも用途に応じたコマンドがあります。
| コマンド | 対象 | 使いどころ |
|---|---|---|
wp cache flush | オブジェクトキャッシュ(Redis / Memcached 含む) | プラグイン設定変更後・Redis の内容をリセットしたいとき |
wp transient delete --all | DB に保存されたトランジェント全件 | wp_options テーブルの肥大化解消・移行後の古いキャッシュ削除 |
wp rewrite flush | パーマリンクのリライトルール | カスタム投稿タイプ追加後・パーマリンク設定変更後 |
wp cache get <key> <group> | 指定キーのキャッシュ値 | 特定のキャッシュ値を確認してデバッグしたいとき |
wp cache delete <key> <group> | 指定キーのキャッシュ1件 | 全体をフラッシュせず特定のキャッシュだけ削除したいとき |
「ページが更新されない」トラブルには wp cache flush と wp transient delete --all を組み合わせるのが定石です。
「カスタム投稿タイプの URL が 404 になる」トラブルには wp rewrite flush が有効です。
ユースケース
プラグイン更新後にキャッシュ起因の不具合を解消する
# プラグインを更新する
wp plugin update --all
# オブジェクトキャッシュをフラッシュして古いデータを除去する
wp cache flush
# トランジェントも削除して完全にクリアする
wp transient delete --all
プラグイン更新後に古いキャッシュが残っていると、管理画面の表示崩れや機能の誤動作が起きることがあります。
更新直後にキャッシュをセットでクリアする手順をデプロイフローに組み込んでおくと、こうしたトラブルを予防できます。
Redis が導入された環境でステージングのキャッシュをリセットする
# Redis の接続状況を確認する
wp eval 'global $wp_object_cache; var_dump(get_class($wp_object_cache));'
# オブジェクトキャッシュ(Redis)をフラッシュする
wp cache flush
# フラッシュ後に特定のキャッシュが消えたか確認する
wp cache get "alloptions" "options"
ステージング環境に本番データをコピーした後、古い Redis キャッシュが残っていると正しい動作確認ができない場合があります。
wp cache flush でキャッシュをリセットしてから動作確認を行うと、DBの実データに基づいた正確な検証ができます。
AIエージェントが実行しようとした場合
AIエージェントの目的
AIエージェントは主に次のような目的で wp cache flush を実行しようとすることがあります。
- プラグインの更新・設定変更・コードのデプロイ後に、古いキャッシュを除去してサイトに最新の状態を反映させるために実行することがあります。
- ページの表示がおかしい・設定が反映されないといったトラブルのファーストステップとして、キャッシュ起因の問題を切り分けるために実行することがあります。
- ステージング環境に本番データをコピーした後、古いオブジェクトキャッシュをリセットして正確な動作確認を行うために実行することがあります。
危険性
wp cache flush コマンドは、削除されたキャッシュが次回リクエスト時に自動で再生成されるため、データが失われる危険性はありません。
ただし、Redis や Memcached を複数のアプリケーションで共有している環境では、フラッシュによって WordPress 以外のキャッシュも消える可能性があります。
また、高トラフィックな本番環境でキャッシュを全削除すると、キャッシュが再生成されるまでの間にデータベースへの負荷が集中し、一時的なパフォーマンス低下を引き起こす場合があります。AIエージェントが実行する際は、共有キャッシュストアの有無と実行タイミングを確認してから行うことを推奨します。