WP Super Cache

説明

WP Super Cache プラグインは動的 WordPress ブログから静的 HTML ファイルを生成します。Web サーバーはユーザーからのリクエストがに対して時間のかかる WordPress PHP スクリプトを処理する代わりに生成された HTML ファイルを返します。

このプラグインはユーザーのうち、以下の大部分のユーザーに対して静的 HTML ファイルを返します。

  • ログインしていないユーザー
  • コメントを書き込んだことのないユーザー
  • パスワード保護された投稿を表示していないユーザー

99% のユーザーに対して静的 HTML ファイルが返されるため、1つのキャッシュファイルは何千回も利用されます。他のユーザーに対してはアクセスに応じた個別のカスタムキャッシュファイルが返されます。ユーザーがログインしたり、コメントを残すと、プラグインはその表示と同時に内容をキャッシュします。

プラグインは3つの方法でキャッシュファイルを配信します (速い順):

  1. エキスパート。最速の方法は、Apache の mod_rewrite (または Web サーバーがサポートする同様のモジュール) を使って「supercached」静的 HTML ファイルを配信することです。これは PHP を完全にバイパスするため非常に高速です。サーバーに大量のトラフィックが押し寄せても、リクエストが「軽い」ため耐えられる可能性が高くなります。ただし、Apache の mod_rewrite モジュール (カスタムパーマリンクを使用していればおそらくインストール済みです) と .htaccess ファイルの変更が必要です。この変更にはリスクがあり、誤って変更するとサイトがダウンする可能性があります。
  2. シンプル。Supercache の静的ファイルを PHP で配信する方式で、このプラグインの推奨の使い方です。「supercached」ファイルが存在すればそれを配信し、mod_rewrite 方式とほぼ同じくらい高速です。.htaccess ファイルを変更する必要がないため、設定も簡単です。カスタムパーマリンクは引き続き必要です。このキャッシュモードでは、ページの一部を動的なままにできます。
  3. WP-Cache キャッシング。これは主に、既知のユーザー、パラメーター付き URL、フィードのページをキャッシュするために使用されます。既知のユーザーとは、ログインしているユーザー、コメントを残した訪問者、ユーザーごとのカスタムデータを表示すべき訪問者のことです。最も柔軟なキャッシュ方法ですが、わずかに遅くなります。スーパーキャッシュが無効な場合は、未知のユーザーのアクセスも WP-Cache キャッシングがキャッシュします。このモードではページに動的な部分を含めることもできます。このモードは常に有効ですが、既知のユーザー、パラメーター付き URL、フィードのキャッシュは個別に無効にできます。WP-Cache キャッシングのみを使用したい場合は、wp-config.php で定数 “DISABLE_SUPERCACHE” を1に設定してください。

PHP ファイルの編集に慣れていない場合は、シンプルモードを使用してください。設定が簡単で、とても高速です。

推奨設定

  1. シンプルなキャッシュ。
  2. 固定ページの圧縮。
  3. 既知のユーザー向けのページをキャッシュしない。
  4. キャッシュの再構築。
  5. CDN に対応。
  6. ホームページの追加チェック。

「拒否するユーザーエージェント」テキストボックスの内容を削除して、検索エンジンがキャッシュファイルを生成できるようにすることも検討してください。

「拒否するユーザーエージェント」テキストボックスの内容を削除して、検索エンジンがキャッシュファイルを生成できるようにすることも検討してください。

できるだけ多くの投稿をプリロードし、「プリロードモード」を有効にしてください。古いキャッシュファイルのガベージコレクションは無効になります。サイドバーウィジェットが頻繁に更新されなくてもよい場合は、プリロード間隔を2880分 (2日) に設定すると、すべての投稿が頻繁に再キャッシュされなくなります。プリロードが実行されると、更新対象の投稿のキャッシュファイルが削除され、再生成されます。その後、古いファイル全体のガベージコレクションが実行され、古くなったキャッシュファイルが一掃されます。
プリロードモードが有効でも、投稿が変更されたり、コメントが投稿されたりするとキャッシュファイルは削除されます。

開発

  • このプラグインの開発は GitHub 上で活発に行われています。
  • プラグインの各言語への翻訳は翻訳ページで行われています。

ドキュメント

以下より詳しい情報が必要な場合は、wiki や 開発者向けドキュメント をご覧ください。

プリロード

プリロードによって、サイトの投稿・カテゴリー・タグのキャッシュファイルを生成できます。プリロードは、他の訪問者と同じようにサイトの各ページにアクセスしながら、キャッシュページを順に生成していきます。この機能は逐次処理のため、投稿が多い場合はサイト全体のプリロードに時間がかかることがあります。
プリロードをより効果的にするには、古いキャッシュファイルが削除されないようにガベージコレクションを無効にすると便利です。これは設定で「プリロードモード」を有効にすることで行えます。ただし、ページはいずれ古くなること、また、コメントの投稿や投稿の編集による更新でキャッシュの一部がクリアされることに注意してください。

ガベージコレクション

キャッシュディレクトリは時間とともにいっぱいになり、サーバーの容量を消費します。容量が限られている場合や容量に応じて課金される場合、またはサイトのキャッシュページが古くなるのが心配な場合は、ガベージコレクションを行う必要があります。ガベージコレクションは定期的に実行され、キャッシュディレクトリ内の古いファイルを削除します。詳細設定ページでは以下を指定できます。
1. キャッシュタイムアウト。キャッシュファイルが新鮮とみなされる時間。この時間を過ぎると古くなり、削除できるようになります。
2. スケジューラー。ガベージコレクションを実行する頻度を設定します。
3. 通知メール。ガベージコレクションジョブの進行状況を受け取れます。
ガベージコレクションの設定に正解や不正解はありません。サイトによって異なります。
サイトが定期的に更新されたり、コメントが付いたりする場合は、タイムアウトを1800秒、タイマーを600秒に設定してください。
サイトがほぼ静的な場合は、タイムアウトに0を入力してガベージコレクションを無効にするか、非常に大きなタイムアウト値を使用してください。

キャッシュディレクトリ (通常は wp-content/cache/) は一時ファイル専用です。重要なファイルや、重要なファイル・ディレクトリへのシンボリックリンクを絶対にそこへ置かないでください。プラグインに書き込み権限があると削除されます。

CDN

コンテンツデリバリーネットワーク (CDN) は通常、世界中に配置されたコンピューターのネットワークで、訪問者に近いサーバーを利用してサイトのコンテンツをより高速に配信します。画像、JavaScript、CSS ファイルなどの静的ファイルをこのネットワークから配信することで、サイトの読み込みを高速化できます。また、自分のドメインのサブドメインから静的ファイルを配信する、いわば「簡易 CDN」を作ることもできます。

基本的な CDN サポートを提供するため、OSSDL CDN off-linker が WP Super Cache に統合されました。これは、サーバー上の wp-content と wp-includes にあるファイル (.php ファイルを除く) の URL を、別のホスト名を指すように書き換えることで動作します。多くの CDN はオリジンプルをサポートしています。これは、ファイルが最初にリクエストされたときに CDN がサーバーから自動的にダウンロードし、設定可能な期間はそのまま配信を続け、期間が過ぎると再びサーバーからダウンロードするという仕組みです。

プラグイン設定ページの「CDN」タブで設定します。これは高度なテクニックであり、Web サーバーや CDN の仕組みについての基本的な理解が必要です。CDN を設定したあとは、必ずファイルキャッシュをクリアしてください。

REST API

このプラグインの設定にアクセスするための REST API エンドポイントが追加されました。使用するには、設定ページを表示する権限を持つ管理者ユーザーとして認証を受ける必要があります。まだドキュメント化されていませんが、これを扱うコードはすべて「rest」ディレクトリにあります。

カスタムキャッシュ

add_cacheaction() 関数を使って、キャッシュ処理にフックできるようになりました。

利用できるフックは3つあります:

  1. ‘wp_cache_get_cookies_values’ – WP Cache が使用するキーを変更します。
  2. ‘add_cacheaction’ – phase2 で実行されます。プラグインが WordPress のフックを追加できるようにします。
  3. ‘cache_admin_page’ – 管理ページで実行されます。新しい設定オプションを追加するなど、そのページを変更するために使用します。

通常の WordPress フィルターも1つあります。キャッシュ前に行われるチェックをカスタマイズするには、
「do_createsupercache」フィルターを使用してください。このフィルターはパラメーターを1つ受け取ります。
WP-Cache の wp_cache_get_cookies_values() 関数の出力です。

WP Super Cache には、WordPress の大部分よりも先に読み込まれる独自のプラグインシステムがあります。独自のプラグインを追加するには、wp-content/plugins/wp-super-cache-plugins ディレクトリに配置するか、プラグインへのフルパスを指定して wpsc_add_plugin( $name ) を呼び出します。

「既知のユーザー」を識別するために使用する Cookie は、wpsc_add_cookie( $name ) と wpsc_delete_cookie( $name ) で変更できます。例として plugins/searchengine.php をご覧ください。

トラブルシューティング

プラグインをインストールしても動作しない場合は、以下の点を確認してください:

  1. wp-content にウェブサーバーから書き込めますか ?
  2. wp-content/wp-cache-config.php はありますか ? ない場合は、wp-super-cache/wp-cache-config-sample.php ファイルを wp-content/wp-cache-config.php にコピーし、WPCACHEHOME が正しい場所を指していることを確認してください。
  3. wp-content/advanced-cache.php はありますか ? ない場合は、wp-super-cache/advanced-cache.php を wp-content/ にコピーする必要があります。コピーしたファイルを編集して、wp-super-cache フォルダーを指すようにパスを変更してください。
  4. ページがまったくキャッシュされない場合は、wp-content/advanced-cache.php を削除し、上記の案内に従って作り直してください。
  5. 次の行が wp-config.php にあり、「require_once(ABSPATH.’wp-settings.php’);」の行より必ず上にあることを確認してください:

    define( 'WP_CACHE', true );
    
  6. 「設定」「WP Super Cache」ページをもう一度開き、キャッシュを有効にしてください。
  7. wp-content/cache/supercache/ を確認してください。そこにディレクトリやファイルはありますか ?
  8. PHP の error_log に何か出力されていませんか ?
  9. Super Cache のインストール後に、ブラウザーがファイルを保存するよう繰り返し求めてくる場合は、Super Cache の圧縮を無効にする必要があります。「設定」「WP Super Cache」ページを開き、そこで無効にしてください。
  10. 「failed to acquire key 0x152b: Permission denied in…」や「Page not cached by WP Super Cache. Could not get mutex lock.」のようなファイルロックのエラーは、ファイルロックを使用する必要があるかもしれないことを示しています。wp-content/wp-cache-config.php を編集して、「$use_flock = true」のコメントを解除するか、$sem_id を別の値に設定してください。最後の手段として、管理画面からファイルロックを無効にすることもできます。
  11. 粗いファイルロックを使用している場合は、cache/wp_cache_mutex.lock がウェブサーバーから書き込み可能になっていることを確認してください。
  12. キャッシュフォルダを NFS、Samba、NAS の共有上に置くことはできません。ローカルディスク上に置く必要があります。キャッシュフォルダがローカルマシン上にないと、ファイルのロックや期限切れファイルの削除が正しく動作しません。
  13. WordPress が wp-cron.php を見つけられない場合、古いキャッシュファイルのガベージコレクションは動作しません。アクセスログ (access_logs) に wp-cron.php のエントリーがあるか、また、ホスト名がネットワークやインターネット上の他のサーバーが使用する外部 IP アドレスに解決されるかを確認してください。
  14. supercache 経由で古いページが訪問者に配信されている場合は、Apache のモジュール (Apache を使っていない場合は、それに相当するもの) が不足している可能性があります。必要なモジュールは mod_mime、mod_headers、mod_expires の3つです。後者の2つは、サイト上の既存ページの新しいバージョンをブラウザーに確実に読み込ませるために、特に重要です。
  15. 「WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!」(WP Super Cache はインストールされていますが、正常に動作していません。wp-content/advanced-cache.php にある wp-cache-phase1.php のパスを修正する必要があります !) というエラーメッセージがすべてのページの末尾に表示されます。お好みのエディターで wp-content/advanced-cache.php ファイルを開いてください。wp-cache-phase1.php のパスは正しいですか ? このファイルは通常、wp-content/plugins/wp-super-cache/ にあります。パスが正しくない場合、キャッシュエンジンは読み込まれません。
  16. キャッシュが機能しません。ブログを再読み込みするたびにタイムスタンプが変わります。.htaccess のルールに書かれているパスが、supercache ディレクトリの実際の場所と一致しているか確認してください。パスを直接書き込む必要があるかもしれません。supercache モードを無効にしてみてください。
  17. supercache のキャッシュファイルが生成されているのに配信されない場合は、wp-content/cache/supercache フォルダーすべて (および wp-content 内の cache フォルダーと supercache フォルダーそれぞれ) と、wp-content/cache/.htaccess のパーミッションを確認してください。PHP が Apache とは別のユーザーで実行されていて、パーミッションが厳しく設定されていると、Apache が PHP が生成したキャッシュファイルを読み取れないことがあります。これを修正するには、wp-config.php に次の行を追加する必要があります (WP_CACHE の定義より上に追加してください)。その後、キャッシュを消去してください。

    umask( 0022 );
    
  18. プラグインで圧縮を有効にしたあと、ブラウザーに文字化けしたデータが表示される場合は、Web サーバー側ですでに圧縮が有効になっている可能性があります。Apache では mod_deflate を無効にする必要があります。PHP では zlib 圧縮が有効になっている場合があり、これは3つの方法で無効にできます。root アクセス権がある場合は、php.ini を編集して zlib.output_compression 設定を探し、「Off」になっていることを確認するか、.htaccess に次の行を追加してください:

    php_flag zlib.output_compression off
    

    それでも動作しない場合は、wp-config.php に次の行を追加してください。

    ini_set('zlib.output_compression', 0);
    
  19. アンインストール後、WordPress の mod_rewrite ルールも削除した場合は、パーマリンクが機能しなくなることがあります。その場合は、「設定」「パーマリンク」ページを開き、フォームをもう一度保存してルールを再生成してください。
  20. ブログが読み込めない場合は、wp-config.php が正しいか確認してください。PHP の開始タグまたは終了タグが抜けていませんか ?
  21. フロントページは正常なのに、投稿や固定ページが404になりますか ? 「設定」->「パーマリンク」に移動し、カスタムパーマリンク構造を選択してから「保存」をクリックしてください。.htaccess ファイルを手動で更新する必要があるかもしれません。
  22. サイトで特定の文字が正しく表示されない場合、サーバーが正しく設定されていない可能性があります。使用している文字セットを訪問者に伝える必要があります。「設定」->「表示設定」に移動し、「ページとフィードの文字コード」の値をコピーしてください。Supercache と WordPress のすべてのリライトルールが書かれた .htaccess ファイルを編集して先頭に以下を追加し、CHARSET をコピーした値 (例: ‘UTF-8’) に置き換えてください。

    AddDefaultCharset CHARSET
    
  23. 「WP Super Cache is installed but broken. The constant WPCACHEHOME must be set in the file wp-config.php and point at the WP Super Cache plugin directory.」というエラーメッセージがすべてのページの末尾に表示されます。wp-content/advanced-cache.php を削除してプラグイン設定ページを再読み込みするか、wp-config.php を編集して WPCACHEHOME を探し、wp-super-cache フォルダーを指していることを確認してください。通常は wp-content/plugins/wp-super-cache/ ですが、そのファイルへのフルパスが必要になることが多いでしょう (そのため、設定ページに修正させる方が簡単です)。これが正しくないと、キャッシュエンジンは読み込まれません。
  24. プラグインが使用するセマフォの数が原因でサーバーに問題が起きている場合、それは一部のユーザーがファイルロックを使用しているためです。ファイルロックは推奨されません (ただし、ごく少数のユーザーには必要です)。定数 WPSC_DISABLE_LOCKING を定義すると、ファイルロックをグローバルに無効化できます。また、定数 WPSC_REMOVE_SEMAPHORE を定義すると、各ページのキャッシュ後に sem_remove() が呼び出されますが、これは同じセマフォを要求する他のプロセスで問題を起こすようです。無効にするのが最善です。
  25. プラグインが間違ったディレクトリで .htaccess ファイルを探している場合は、wp-config.php または wp-cache-config.php で変数 $htaccess_path にグローバルの .htaccess のパスを設定してください。これは WordPress を特殊な方法でインストールしている場合に起こることがあります。

インストール

他のプラグインと同じように、プラグインページから直接インストールしてください。ただし、カスタムパーマリンクが有効になっている必要があります。「設定」->「WP Super Cache」のプラグイン設定ページに移動し、キャッシュを有効化してください。

WP Super Cache をアンインストールする方法

必要な作業のほとんどは、プラグインページでプラグインを停止することだけです。プラグインは自身が作成・変更したファイルの大半をクリーンアップしますが、.htaccess ファイルからの mod_rewrite ルールの削除はまだ行いません。そのファイル内の SuperCache BEGIN と END タグで囲まれたセクションを探してください。このブロックに WordPress のルールを追加している人もいるため、プラグインはこれらを削除しません。

手動でアンインストールするには:

  1. プラグイン設定ページでキャッシュをオフにし、キャッシュをクリアします。
  2. プラグインページでプラグインを無効にします。
  3. wp-config.php から WP_CACHE の定義を削除してください。次のような記述です: define( 'WP_CACHE', true );
  4. .htaccess ファイルから Super Cache の mod_rewrite ルールを削除します。
  5. wp-content/advanced-cache.php ファイルと wp-content/wp-cache-config.php ファイルを削除してください。
  6. wp-content/cache/ ディレクトリを削除してください。
  7. plugins ディレクトリから wp-super-cache ディレクトリを削除してください。

他のすべての方法でうまくいかず、サイトが壊れてしまった場合

  1. wp-config.php から WP_CACHE の定義を削除してください。次のような記述です: define( 'WP_CACHE', true );
  2. ルートディレクトリの .htaccess ファイルにプラグインが書き込んだルール (上記参照) を削除します。
  3. plugins フォルダにある wp-super-cache フォルダを削除してください。
  4. 必要に応じて、wp-content/ 内の advanced-cache.php、wp-cache-config.php、cache フォルダーを削除します。

FAQ

ブログがキャッシュされていることを確認するにはどうすればよいですか ?

「設定」->「WP Super Cache」に移動し、簡易設定ページにある「キャッシュテスター」フォームを探してください。「キャッシュをテスト」をクリックすると、プラグインがサイトのフロントページを2回リクエストし、それぞれのタイムスタンプを比較して一致するか確認します。

手動で確認したい場合は、プラグイン設定ページでデバッグを有効にし、ログファイルを新しいブラウザータブで開いてください。次に、ログイン状態とログアウト状態でブログを表示すると、ログに活動が記録されるはずです。サイトの任意のページのソースを表示してください。ページが最初に作成されたときは、ソースコードの末尾に「Dynamic page generated in XXXX seconds.」と「Cached page generated by WP-Super-Cache on YYYY-MM-DD HH:MM:SS」というテキストが表示されます。再読み込みすると、キャッシュページには同じタイムスタンプが表示されるので、数秒待ってから確認してください。
Supercache 機能が無効で圧縮が有効な場合は、「Compression = gzip」というテキストが追加されます。圧縮が無効で、ページが静的 HTML ファイルとして配信される場合は、「super cache」というテキストが追加されます。このほかにキャッシュファイルが PHP スクリプトから配信されたのか静的キャッシュから配信されたのかを確認する唯一の方法は、HTTP ヘッダーを見ることです。PHP でキャッシュされたページには「WP-Super-Cache: Served supercache file from PHP」ヘッダーが付きます。WPCache でキャッシュされたファイルには「WP-Super-Cache: Served WPCache cache file」ヘッダーが付きます。また、wp-content/cache/supercache/hostname/ のキャッシュディレクトリに静的キャッシュファイルがあるかも確認してください。
.htaccess ファイルからプラグインのルールが失われている場合、プラグインは supercache ページが見つかればそれを配信しようとします。この場合は「WP-Super-Cache: Served supercache file from PHP」ヘッダーが付きます。
Apache の pagespeed モジュールはテスト時に問題を起こすことがあります。キャッシュテスターの実行で問題に気づいた場合は無効にしてください。

Supercache 機能を無効にするにはどうすればよいですか ?

WP-Cache エンジンのみを使用したい場合は、wp-config.php を編集するか、定数 ‘DISABLE_SUPERCACHE’ を1に設定する mu-plugin を作成してください。

WP-Cache ファイルと Supercache ファイル

すべてのキャッシュファイルは wp-content/cache/supercache/HOSTNAME/ に保存されます。HOSTNAME はサイトのドメイン名です。ファイルはサイトのパーマリンク構造に合わせたディレクトリに保存されます。Supercache ファイルは index.html またはその変種で、ブログにアクセスした訪問者の種類によって異なります。その他のファイルは wp-cache-XXXXXXXXXXXXXXXXX.php という名前になります。関連するメタファイルの名前は「meta」で始まり、これらのファイルにはキャッシュファイルに関する情報が含まれます。これらのファイルはプラグインの「WPCache caching」エンジンによって生成されます。

コメントやブログの他の動的な部分はすぐに更新されますか ?

コメントは、ブログ所有者のコメントポリシーに応じて、承認されるとすぐに表示されます。ページ上の他の動的な要素は、JavaScript、Flash、Java などのクライアントサイドのブラウザー言語で書かれていない限り、更新されないことがあります。このプラグインは文字通り静的な HTML ページを生成します。これらのページの配信時に PHP は実行されません。「Popularity Contest」は、動作しないプラグインの一例です。

Super Cache の圧縮はサーバーを遅くしますか ?

いいえ、その逆です。Super Cache ファイルは圧縮された状態で保存されるため、負荷の高い圧縮処理は1回しか行われません。これらのファイルは一般にはるかに小さく、非圧縮の HTML よりもずっと速く訪問者のブラウザーに送信されます。その結果、サーバーがネットワーク通信に費やす時間が減って CPU 時間と帯域幅を節約でき、次のリクエストもより速く処理できます。

ページの特定の部分を動的なままにするにはどうすればよいですか ?

注意: この機能はデフォルトでは無効です。詳細設定ページで有効にする必要があります。

これには2つの方法があります。1つは、動的なままにしたいページの部分を JavaScript で描画する方法です。これは Google Adsense や外部サイトの多くのウィジェットが採用しており、推奨される方法です。もう1つは、WP Super Cache のフィルターを使う方法ですが、この場合 mod_rewrite モードのキャッシュは使用できません。「シンプル」配信方式を使用するか、スーパーキャッシュを無効にする必要があります。

WP Super Cache 1.4 では、wpsc_cachedata という cacheaction フィルターが導入されました。表示されるキャッシュページはこのフィルターを通るため、ページを変更できます。ページにプレースホルダータグが含まれていれば、このフィルターを使ってそのタグを動的に生成した HTML に置き換えられます。
wpsc_cachedata フィルターにフックする関数は、late_init 機能を使用する場合を除き、WP Super Cache の plugins フォルダー内のファイルに置く必要があります。サンプルプラグインが同梱されています。サンプルコードは dynamic-cache-test.php を編集して確認してください。
そこには2つのサンプル関数があります。1つは、キャッシュページの配信時に、定義した文字列 (またはタグ) を置き換えるシンプルな関数です。もう1つのサンプル関数は、出力バッファーを使用して動的コンテンツを生成します。PHP の動作上の制限により、少なくともページがキャッシュされる時点では、出力バッファーのコードは wpsc_cachedata フィルターより先に実行されなければなりません。キャッシュページの配信時には関係ありません。より技術的で詳しい説明は この投稿 をご覧ください。
WordPress の関数を実行するには、詳細設定ページで「Late init」機能を有効にする必要があります。

「init」アクションが発火するまでキャッシュの配信を遅らせるにはどうすればよいですか ?

キャッシュファイルは、WordPress のほぼすべてが読み込まれる前に配信されます。これはパフォーマンスの面では素晴らしいのですが、WordPress のコア機能を使ってプラグインを拡張したい場合には厄介です。詳細設定ページで「Late init」モードを有効にすると、キャッシュファイルは「init」の発火時に配信されるようになります。この時点では WordPress とそのプラグインが読み込まれています。

WP UserOnline、Popularity Contest、WP Postratings などのプラグインがブログで動作・更新しなくなったのはなぜですか ?

このプラグインはページ全体をキャッシュしますが、プラグインの中にはページが読み込まれるたびに PHP コードを実行できると想定しているものがあります。これを解決するには、そのプラグインが JavaScript/AJAX の手法か、前の回答で説明した wpsc_cachedata フィルターを使って、動的な情報を更新・表示する必要があります。

プラグインをアップグレードすると WP Super Cache プラグインが消えてしまうのはなぜですか ?

WordPress はプラグインを更新する際にプラグインフォルダーを削除します。これは WP Super Cache でも同じで、wp-super-cache/plugins/ 内の変更したファイルは削除されます。カスタムプラグインは、いくつかの方法で別のディレクトリに配置できます。wp-config.php または wp-content/wp-cache-config.php で変数 $wp_cache_plugins_dir を定義し、wp-super-cache フォルダーの外のディレクトリを指定すると、プラグインはそこから読み込まれます。また、早い段階で読み込む必要があるプラグインを配布する場合は、wpsc_add_plugin( $filename ) 関数を使って任意の場所にあるプラグインを追加できます。プラグインファイルを削除するには wpsc_delete_plugin( $filename ) を使用してください。WP Super Cache プラグインの書き方については #574 または この投稿 をご覧ください。

キャッシュ再構築機能は何をしますか ?

訪問者がコメントを残すと、そのページのキャッシュファイルは削除され、次の訪問者がキャッシュページを再作成します。ページの読み込みには時間がかかりますが、その間に100人の訪問者が来たらどうなるでしょうか。キャッシュページがないため、WordPress はそれぞれのユーザーに新しいページを生成し、プラグインはその100人の訪問者ごとにキャッシュページを作成しようとして、サーバーに大きな負荷がかかります。この機能はこれを防ぎます。コメントが残されてもキャッシュページはクリアされず、代わりに再構築対象としてマークされます。その後10秒以内に来た次の訪問者がキャッシュページを再生成し、他の99人の訪問者には古いページが配信されます。最終的に最初の訪問者によってページが読み込まれ、キャッシュページが更新されます。詳しくはこの投稿をご覧ください。

プラグインはなぜデフォルトで検索エンジンのボットによるリクエストをキャッシュしないのですか ?

こうしたボットは通常、各ページを1回しか訪問しません。人気のないページであれば、サーバー上で使われないまま置かれるだけのキャッシュファイルを作成する意味はありません。それでも、詳細設定ページの「拒否するユーザーエージェント」からボットのリストを削除すれば、これらの訪問もキャッシュできます。

ホームページの代わりにカテゴリーページが表示される

ごく一部のサイトでは、以下の設定で問題が発生します:

  1. フロントページに固定ページを使用している。
  2. /%category%/%postname%/ のパーマリンク構造を使用している。

カテゴリーページが静的ページではなくサイトのホームページとしてキャッシュされることがあります。この問題は再現できていませんが、簡単な解決策は「シンプル」モードを使うことです。詳細設定ページで「追加のホームページチェック」を有効にすることもできます。

http://ismyblogworking.com/ からキャッシュに関する警告が表示されるのはなぜですか ?

「あなたのブログはクライアントキャッシュをサポートしていません (If-modified-since に対する 304 応答がありません)。」
「あなたのフィードはキャッシュをサポートしていません (If-modified-since に対する 304 応答がありません)」

エキスパートモードの Supercache は 304 ヘッダーチェックをサポートしませんが、シンプルモードではサポートします。これはサーバーではなく、ブラウザーによって行われるキャッシュです。現在のページの更新版がサーバーにあるかどうかをブラウザーが問い合わせるチェックで、更新版がなければ古いバージョンを再ダウンロードしません。ページはサーバー側では引き続きキャッシュされており、訪問者のブラウザーにキャッシュされないだけです。
さらに分析するには、http://www.ircache.net/cgi-bin/cacheability.py または https://redbot.org/ の Cacheability Engine をお試しください。

このプラグインで Google Analytics の utm_source トラッキングツールを最適に使用するにはどうすればよいですか ?

このトラッキングは、Twitter やフィードリーダーなどのさまざまなソースからリンクされる各 URL にクエリー文字列を追加します。残念ながら、これによってページがスーパーキャッシュされなくなります。スーパーキャッシュ可能なアンカータグに変換する方法については、こちらの Joost のコメントをご覧ください。

プラグインが「wp-content が書き込み可能です ! htdocs が書き込み可能です !」と警告します

Web サーバーがこれらのディレクトリに書き込めるのは良い状態ではありませんが、管理を容易にするため、共有ホスティングアカウントがこのように設定されていることもあります。パーミッションを修正するには chmod 755 directory を使用するか、FTP クライアントのパーミッション設定の項目を探してください。このGoogle 検索で、このトピックの詳しい情報が見つかります。この Codex ページも参考になります。残念ながら、これらのディレクトリが書き込み可能であることを必須とするホストもあります。その場合は、この警告を無視してください。

wp-config.php から WP_CACHE 定義を削除するにはどうすればよいですか ?

デスクトップの FTP クライアントを起動してサイトに接続します。サイトのルート (またはその1つ下のディレクトリ) に移動すると wp-config.php があります。そのファイルをダウンロードし、テキストエディターで編集してください。define( 'WP_CACHE', true ); の行を削除して保存します。その後アップロードし、サーバー上の wp-config.php を上書きしてください。

.htaccess ファイルから Super Cache ルールを削除するにはどうすればよいですか ?

デスクトップの FTP クライアントを起動してサイトに接続します。FTP クライアントの設定で「隠しファイルを表示」を有効にする必要があるかもしれません。サイトのルートに移動すると .htaccess ファイルがあります。そのファイルをダウンロードし、テキストエディターで編集してください。「# BEGIN WPSuperCache」と「# END WPSuperCache」の間の行を削除して保存します。その後アップロードし、サーバー上の .htaccess ファイルを上書きしてください。

ファイルのアクセス許可を変更するにはどうすればよいですか ?

WordPress Codex のこのページでは、サーバー上のファイルパーミッションについて知っておくべきことすべてと、そのさまざまな変更方法を説明しています。

新しい投稿が公開されると負荷が急増するのはなぜですか ?

「新しい投稿が公開されたらすべてのキャッシュファイルを削除する」オプションが設定されているのかもしれません。これらのファイルの削除には時間がかかるうえ、訪問者はキャッシュされていないページにアクセスすることになります。URL に utm_source を付けた Google Analytics のキャンペーントラッキングを使用していませんか ? そうしたページはキャッシュされません。正しい使い方については、上記の「このプラグインで Google Analytics の utm_source トラッキングツールを最適に使用するには」という質問をご覧ください。
キャッシュページは投稿の公開時に更新する必要があります。あるいは、サーバーがトラフィック量に対応しきれていないだけかもしれません。「キャッシュ再構築」機能を有効にすると改善するかもしれません。

何ページまでキャッシュできますか ?

実質的な制限は、サーバー側で定義されている制限だけです。たとえば、EXT2 と EXT3 ではサブディレクトリは最大31,999個までなので、フラットなパーマリンク構造 (/%POSTNAME%/ など) で投稿が32,000件を超えると問題が起きる可能性があります。同様に、マルチサイトネットワークで31,999を超えるサイト (ブログ) を運営している場合は、そのすべてをキャッシュできません。現実的には、それだけ多くのアクティブなサイトがあれば、1台のサーバーでは運用していないでしょう。

サイトの www 付きバージョンが別々にキャッシュされているようです。どうすれば止められますか ?

WordPress はサイトの正規 URL にリダイレクトするはずですが、そうならない場合は、以下を .htaccess の Supercache と WordPress のルールより上に追加してください。example.com は自分のホスト名に変更してください。
RewriteCond %{HTTP_HOST} www.example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

スマートフォンやタブレットのような小さな画面のクライアントに、キャッシュしたモバイルページを配信するにはどうすればよいですか ?

お使いのテーマはおそらくレスポンシブで、ページを表示するデバイスに合わせてページの大きさを調整します。レスポンシブでない場合は、モバイル向けにフォーマットしたページを表示する別のモバイルプラグインを使用する必要があります。以下のプラグインはテスト済みですが、モバイルクライアントによって結果は異なる場合があります (YMMV)。また、詳細設定ページでモバイルブラウザーのサポートも有効にする必要があります。

評価

2026年9月10日 1 reply
Though I don't like the updated settings page (it would be better to keep it in the same style as WordPress), the caching works perfectly.
2026年8月13日 1 reply
Where I keep a few changes on my website, the cache checking is nice with it.
2026年8月4日 1 reply
Not the flashiest caching plugin around but it's been dependable for years across a few low-traffic client sites where simplicity matters more than advanced features.
2026年7月7日 1 reply
Been running this for over a year on a few client sites. Configuration is a bit old-school compared to newer caching plugins, but it's stable and rarely needs attention once set up.
2026年4月22日 1 reply
I’ve been using WP Super Cache for a while now and it has made a huge difference in my website performance. When properly configured, it turned out to be the best caching solution I’ve tried for WordPress. Page load times are significantly faster, server load is noticeably lower, and everything feels much more responsive overall. What I also really appreciate is that it’s completely free, yet still delivers performance that easily competes with many paid caching plugins. In my experience, it’s one of the most reliable and efficient caching systems available for WordPress. If set up correctly, WP Super Cache can seriously improve both speed and stability — definitely worth using.
1,346件のレビューをすべて表示

貢献者と開発者

WP Super Cache はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。

貢献者

“WP Super Cache” は34ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“WP Super Cache” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログを RSS で購読してみてください。

変更履歴

3.1.4 – 2026-09-30

  • Fix: the settings page no longer scrolls sideways in right-to-left languages.
  • Update the tested-up-to version to WordPress 7.1.

3.1.3 – 2026-08-26

  • 修正: バックスラッシュで終わる直接ページパスがキャッシュ設定ファイルを壊さないように。
  • 修正: CDN の URL と CNAME の設定をサニタイズし、引用符や山括弧を含む値が置換先のアセット URL を壊せないように。
  • 修正: キャッシュ設定ファイルに書き込む文字列設定をエスケープし、引用符やバックスラッシュを含む値でファイルが壊れないように。
  • 修正: 「0」という名前の Cookie により、ログイン中の訪問者がキャッシュから匿名と見なされ、そのユーザー向けのページが全員に配信されることがあった問題。

3.1.2 – 2026-08-19

  • 修正: リクエスト URL が長すぎてキャッシュディレクトリを作成できない場合に、パス長の警告でエラーログがあふれないように。
  • 修正: スラッグに非 ASCII 文字を含むカテゴリー・タグ・アーカイブページのキャッシュをクリアするように。キャッシュ削除ボタンでもこれらのページをクリアできませんでしたが、できるようになりました。
  • 修正: スラッグに非 ASCII 文字を含む投稿の保存時に、キャッシュを正しくクリアするように。
  • Bad Behavior プラグインとの連携を削除。上流のプラグインはすでにメンテナンスされておらず、長年にわたる条件判定の反転により、この連携は実際には一度も動作していませんでした。
  • 修正: 投稿編集後のキャッシュクリア時に投稿 ID の0を無視するように。フロントページのキャッシュが予期せず削除されることがありました。
  • wp-cache.php を役割ごとに inc/ 配下のファイルへ分割 (#1061) (#1065)
  • 修正: Permissions-Policy、Cross-Origin-Opener/Embedder/Resource-Policy ファミリー、残りの CORS ヘッダーなどの新しいセキュリティヘッダーをキャッシュし、キャッシュ済みレスポンスでも送信されるように。
  • 修正: Accept ヘッダーの品質値を尊重し、JSON を HTML より低い優先度で指定する監視ツールやブラウザーに対して、リクエストごとにページを再構築せずにキャッシュページを配信するように。
  • 修正: REST と Ajax のレスポンスでデバッグ用 HTML コメントを非表示に (#1021)

3.1.1 – 2026-05-27

  • セキュリティ: supercache のファイル名生成を強化し、リクエスト由来のデータがキャッシュディレクトリ外に出られないように。
  • 修正: supercache 専用モードで未オープンのファイルハンドルを閉じる際の、PHP 8以降での致命的エラーを回避。
  • 修正: wp_cache_clear_cache() でブログ ID をキャストし、整数以外を渡す呼び出し元がシングルサイト環境でマルチサイト専用関数を実行しないように。
  • 修正: REST API、Ajax、JSON、WooCommerce API、XML-RPC のレスポンスに HTML デバッグコメントを追加しないように。
  • 修正: キャッシュクリア処理の実行前にコメントがすでに削除されている場合の PHP 警告を回避。

3.1.0 – 2026-04-14

  • wp_die() のエラーページのキャッシュを無効化
  • プラグインをさまざまな面で堅牢化。
  • 修正: stat() の代わりに fileperms() を使用し、エスケープを修正
  • WordPress.org のライブプレビュー Blueprint を追加。
  • 最低要件の WordPress バージョンを6.8に引き上げ。
  • デバイス検出: Composer 依存の代わりに組み込みバージョンを使用するように。
  • 修正: PHP 8.1以降での str_starts_with() の null 非推奨警告を修正。
  • 修正: supercache_last_cached オプションの配列型を処理するように。