WP-Optimize ページキャッシュの設定について
今回は WordPress 向けプラグイン「WP-Optimize」の "ページキャッシュ" 設定について解説したい。
「WP-Optimize」(最新 ver. 3.1.11:2021年7月現在)は WordPress 向けのデータベース最適化プラグインとして広く名が知られているが、実はキャッシュ機能も優秀である。特に、プラグインとして AMP を(完全ではないが、基本的には)サポートしているため、今後はページキャッシュ用途としても利用するユーザが増えると思われる。
なお、新しいプラグインを導入する際は、念のため UpdraftPlus などを使って事前にバックアップを取っておこう。また、キャッシュ系のプラグインは同時に複数使用できない点も抑えておきたい。WP Fastest Cache など他のキャッシュプラグインを使用しているのであれば無効化しておこう。
wp-config.php パーミッション・エラーが出た場合の対処
WP-Optimize をインストール・有効化後、"ページキャッシュ" タブ内で、「ページキャッシュを有効化」のトグルを右にスワイプする。
この時、下記のようなパーミッションに関するエラーが表示された場合は、wp-config.php のパーミッションを変更するか、または wp-config.php を編集する必要がある。
Could not turn on the WP_CACHE constant in wp-config.php. Check your permissions.
このエラーは、wp-config.php のパーミッションを一時的に 644 にすると解決するはずだ。
パーミッション変更後、wp-config.php に以下の1行が加わって、「ページキャッシュを有効化」操作が可能になる。パーミッションを変更した場合、作業後には元の数値(400 など)に戻しておこう。
define('WP_CACHE', true); // WP-Optimize Cache
自分で wp-config.php 内に記述する場合は、上記の1行をファイル内の一番上あたりに挿入すると良い(下スクショ参照)。
これが解決すれば、エラーメッセージが消えて「キャッシュをパージ」(キャッシュを削除する)の項目が表示される。
WP-Optimize「キャッシュの期間」、何時間がベストか
WP-Optimize のページキャッシュ設定の一例として、今回は「モバイル端末用に別のファイルを生成」と「ログインしたユーザーにキャッシュされたページを表示する」には両方ともにチェックを入れず、「キャッシュの期間」は10時間としてみた(上スクショ参照)。設定後、「変更を保存」ボタンの押し忘れに注意しよう。
採用テーマやプラグインによってはモバイル端末(スマホとタブレット)用キャッシュを生成した方がベターな場合もある。最近のレスポンシブデザインであれば、チェックを入れなくても良いだろう。
また、キャッシュ期間(Cache Lifespan)については、更新の多いサイトであればもっと短くしても良いし(10時間以下、例えば8時間)、逆に更新頻度があまり多くなければ1か月や2か月に設定しても良いだろう。
ただし、キャッシュの保持時間を極端に短くし過ぎると、"キャッシュする" という本来の効果が薄れる。参考までに、最新バージョン(WP-Optimize 3.1.8)の「キャッシュの期間」のデフォルト値は24時間であったため、私が運営する中規模サイトでは24時間にしている。
設定後にコンタクトフォームが機能しなかったり、レイアウトが崩れるなどの不具合が生じた場合、WordPress のセキュリティ・トークン(Nonce)の期限切れが影響している可能性がある。
キャッシュ保持期間を10時間以内にすれば、Nonce 値の影響を受けることなくトラブル回避の可能性が高まるだろう。
キャッシュ期間を短くすることでサーバへの負荷が増す場合は、次に説明するプリローダーの間隔を少し長めに設定すると良い。
なお、投稿を編集したりコメントが承認されたりすると、そのページのキャッシュはクリアされる。また、投稿記事にアクセスがあれば、キャッシュの有効期限をチェックして、必要に応じてキャッシュが生成される。
プリローダー(先読み機能)でパフォーマンス向上
先読み機能(プリローダー)は、サイトマップを利用して全てのページや投稿が常にキャッシュされることを担保する機能だ(サイトマップが使用不可の場合は全ての投稿とページをクロールする)。先読み機能を使うことで、訪問者に対してキャッシュされたページが表示されるため、パフォーマンス向上につながる。
今回は「キャッシュプリロード予約を有効にする 」にチェックを入れて、スケジュールを「毎週(1週間ごと)」にしてみた。
なお、運営サイトのページや投稿数が多く、サーバのリソースを大量に使用する可能性があれば、プリローダーのスケジュール期間をあまり短くしない方が良いケースもあり得る。プリローダーはキャッシュファイルを短時間に生成するため、一時的にサーバ負荷が高まる可能性があるためだ。更新頻度が低いサイトであれば、この先読み機能を「オフ」にしておいても問題は生じない。
プリロードについては、サイト規模やサーバの処理能力などによって調整することをお勧めしたい。なお、「最新の投稿」や「最新のコメント」などのウィジェットを使用している場合、すべてのページに最新情報を反映させるためにはプリロードが必要になる。
WP-Optimize キャッシュ機能、どれほど速くなったか
WP-Optimize のキャッシュ機能を "ほぼデフォルト値" で使用してみた結果、Lighthouse や PageSpeed Insights のモバイルで95点前後のハイスコアを記録(未導入時より10ポイント以上アップ)。デスクトップであればほぼフルマークの99~100点に達した。
このプラグインは設定項目が非常にシンプルでありながら、キャッシュ機能は非常に強力であることが分かる。定番機能のデータベース最適化のみで使うにはもったいないといえるだろう。
利用するプラグインの数を減らす意味でも、キャッシュ系を WP-Optimize にしても良いのではなかろうか。開発元のサポート体制やバグフィックス・アップデートもしっかり行われており、長期的に安心して使えそうだ。
WP-Optimize のキャッシュ機能導入の注意点として、繰り返しにはなるが、キャッシュ系プラグインを同時に複数使おうとすると致命的なエラーが出るため、キャッシュ系は一つのプラグインで運営するようにしよう(同じ advanced-cache.php を使用するため)。
また、WooCommerce などといった E コマースを運営している場合、アカウントや会計ページなどをキャッシュ対象から除外することが可能だ(「詳細設定」>「キャッシュから除外する URL」を利用する)。コンタクトフォーム(Contact Form 7 など)のリクエストが失敗するトラブルに関しても、この除外機能を使うと良いだろう。
最後に、任意のページのソースコード下部に以下のような記述があればキャッシュ機能が有効になっているのが確認できる。ソースコードに以下の存在が確認できなければ、ウェブブラウザで該当サイトのキャッシュを空にするか、または、プライベートウィンドウで開いてみると良い。
<!-- Cached by WP-Optimize (gzip) - https://getwpo.com - Last modified: Sat, 17 Apr 2021 22:40:12 GMT -->
<参考・追記>
- ホームページのみキャッシュさせたい場合は、「キャッシュから除外する URL」 に /.+ を記述すると良い。
- キャッシュされたファイルは、wp-content/cache フォルダ内の wpo-cache に保存される。 cache フォルダを削除すると、WP-Optimize のキャッシュおよび他のプラグインからのキャッシュを削除可能。cache フォルダを削除しても、通常は自動的に再生成される。
- Web サーバの互換性は、Apache 以外にも、NGINX、Microsoft IIS、Litespeed、Lighttpd をサポートする。ただし、Gzip 圧縮設定とブラウザの静的ファイルキャッシュ設定 (ヘッダー経由) を利用できるのは Apache のみ。
- 記事投稿時にサイト全体の保存キャッシュを削除したい場合は、テーマの functions.php に add_filter('wpo_purge_all_cache_on_update', '__return_true'); を記述すると良い。
このプラグインに関して何か不明な点等あれば、コメント欄またはコンタクトページより質問いただければと思う。
今後も機会があれば、WordPress のプラグインについて解説したい。
<Sources>
- WP-Optimize – Clean, Compress, Cache. (WordPress プラグインページ)
- WP-Optimize – サポートフォーラム(英語)
- WP-Optimize 公式ホームページ(英語)
- WP-Optimize Cache FAQs(英語)
- What is cache lifespan? via WP-Optimize(英語)
コメント
コメントを投稿