Nginx + Redis Object Cache でページキャッシュを有効化する手順

ubuntu_logo Linux
ubuntu_logo

ヘルスチェックで「ページキャッシュが検出されません」の警告

WordPress を高速化するために Redis Object Cache を導入しているのに、ヘルスチェックで「ページキャッシュが検出されません」とヘルスチェックで警告が出ます。

ページキャッシュが検出されず、サーバーのレスポンスが遅くなっています

ページキャッシュは、ユーザーがアクセスするたびにページを読み込むのではなく、静的なページを保存して提供することで、サイトの速度とパフォーマンスを向上させます。

ページキャッシュの検出は、有効化されたページキャッシュプラグインの検索のほか、ホームページへのリクエストを3回行い、以下のHTTPクライアントキャッシュレスポンスヘッダーのうち1つ以上の検索で行います:

cache-control, expires, age, last-modified, etag, x-cache-enabled, x-cache-disabled, x-srcache-store-status, x-srcache-fetch-status.

・サーバーの応答時間の中央値は625ミリ秒でした。推奨されるしきい値600ミリ秒以下の時間でなければなりません。
・クライアントキャッシュレスポンスヘッダーを検出できませんでした。
・ページキャッシュプラグインは検出されませんでした。

Redis Object Cache を導入しているのに、何故かなと思ったら、Redis Object CacheはWordPress 内部のオブジェクトキャッシュに特化しており、HTMLページ自体のキャッシュ(ページキャッシュ)を行っていないためです。

そこで、Nginx のレスポンスヘッダー設定でページキャッシュを有効化することで、
ブラウザや中間キャッシュがページを再利用できるようになります。

Nginx のレスポンスヘッダー設定でページキャッシュを有効化にする

Nginxの設定変更

Nginx の設定ファイルを編集します

$ sudo vim  /etc/nginx/sites-enabled/example.com

location / ブロック内に以下の 2 行を追加します。

location / {
    try_files $uri $uri/ /index.php?$args;

    # ページキャッシュ有効化(5分)
    expires 5m;
    add_header Cache-Control "public, max-age=300";
}

設定ファイルを保存したら、構文をチェックして、問題がなかったらnginxを再起動します

# 構文チェック
$ sudo nginx -t

# 問題ないなら再起動
$ sudo systemctl reload nginx

動作確認

ブラウザの開発者ツール(F12キー → [ネットワーク] タブ)で、
サイトのレスポンスヘッダーを確認します。

以下のように Cache-ControlExpires ヘッダーが含まれていればOKです。

cache-control: public, max-age=300
expires: Tue, 08 Oct 2025 05:10:00 GMT

まとめ

キャッシュ種別担当箇所効果設定例
オブジェクトキャッシュRedis Object Cache プラグインデータベース・クエリ結果の再利用WordPress内で有効化
ページキャッシュNginx(expires / Cache-Control)ブラウザ・プロキシの再利用上記設定追加
HTMLファイルキャッシュFastCGI cache / WP Super Cache などサーバーサイドの完全キャッシュ任意で導入

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
LinuxUbuntu
スポンサーリンク
シェアする
adminをフォローする
タイトルとURLをコピーしました