
こんにちは。管理人のけーちゃんです。
WordPressにはサイトヘルスという機能があって、サイトの改善点を提示してくれます。
mixhostで作成したWordPressサイトは、このサイトヘルスで『永続オブジェクトキャッシュを使用してください』という指摘を受けます。
指摘されているのだから改善すべきでしょうか?
どうすれば改善できるのでしょうか?
そもそも永続オブジェクトキャッシュとは?
ここでは、これらについてお伝えします。
\目次も見てね!/
結論:対応できない
結論から言うと、今回の問題は対応できません。
実際には対応する必要がありませんし、無理に対応しようとすると異なる問題がおこる可能性があります。

つまり、何もしない方がマシ
その理由について、お伝えします。
問題の確認
『永続オブジェクトキャッシュを使用してください』と表示される問題について確認してみます。
サイト開始直後の場合
この問題は記事や関連オプションなどが増えることで、サイト規模がある程度大きくなった時点で表示されます。そのため、WordPressインストール直後は表示されません。
ある程度記事を投稿した場合
WordPressのダッシュボードを見ると、サイトヘルスステータスという項目があります。

サイトヘルスステータスは、サイトのパフォーマンスやセキュリティの設定状況を診断してくれるサイトヘルス機能の実行結果を、まとめたものです。

良好と表示されないときは
対処した方がよいです
レンタルサーバーによっては問題点が大量に指摘されることがあります。ですが、mixhostはほとんどの項目が対応済みです。
しかしいくつかの項目が未対応のまま残っています。
サイトヘルスステータス内のリンク『サイトヘルス画面』をクリックすると、未対応項目が表示されます。


mixhostは簡単に対応できる項目を対応すると
上図の二つが残るよ
上段の『1つ以上の推奨モジュールが存在しません』については、次のページで対応方法を紹介していまるので参考にしてください。
今回は下段の『永続オブジェクトキャッシュを使用してください』について対応します。
詳しい内容は、次のように書かれていますね。
永続オブジェクトキャッシュは、サイトのデータベースの効率を上げます。その結果、WordPress がサイトのコンテンツや設定を迅速に取得できるようになるため、読み込み時間を短縮できます。
ホスティングサービスに問い合わせれば、サイトで永続オブジェクトキャッシュを有効化できるかどうかがわかります。
これだけの情報では不明点が多いですが、ホスティングサービス、つまりmixhostに問い合わせることを推奨していますね。
永続オブジェクトキャッシュとは
永続オブジェクトキャッシュは、分単位程度の比較的短い時間にデータベース上の同じデータが頻繁に参照されるケースで、サーバーの負荷軽減とページの読み込み速度を向上させることができる仕組みです。
永続オブジェクトキャッシュとWordPress、その他のキャッシュ機能との関係について、少し詳しく解説します。

長いので興味がない人は飛ばしてね
WordPressとデータベースの関係
永続オブジェクトキャッシュの解説の前に、事前知識としてWordPressとデータベースの関係を把握しておく必要があります。
WordPressはWebページの生成に必要な『サイト名』『投稿者』『投稿記事』『カスタムフィールド』『サイドバー設定』『メニュー設定』など様々な情報をデータベースに保存しています。
WordPressは、ブラウザからWebページのデータを送るように指示を受けると、データベースから情報を取り出してWebページを作成します。
ここで重要なのがWordPressとデータベースは、異なるプログラムであるという点です。(*1

スマホ風に言うとアプリです
コンピューター上では、異なるプログラム間でのデータ受け渡しは、とても時間がかかります。そのため、できる限り回数を少なくするのが望ましいのです。

*1) 正確には、WordPressはPHPというプログラム上で動作しています。
キャッシュとは
キャッシュとは、コンピューター上で時間がかかる処理の結果を記憶しておく機能を指します。同じ処理を行うときにキャッシュから結果を受け取ることで、時間短縮が期待できます。
例えば、ブラウザはWebページを表示すると、そのデータをキャッシュします。以降に同じページを表示するときは、キャッシュからデータを取得します。インターネット経由でサーバーからデータを取得する時間が省けるため、時間短縮になります。
キャッシュは、毎回同じ結果になるケースで有効です。処理する度に結果が異なる事柄には利用できません。

ITのプロでもたまにキャッシュの設定を間違えて
トラブルになるケースがあるよ
また時間経過により結果が異なる事柄については、キャッシュに有効期限を設定して有効期限切れ後に正規の手続きでデータを取得します。Webページが更新されているのにブラウザでの表示が変わらないのは、有効期限が残っているからです。
オブジェクトキャッシュとは
WordPressはオブジェクトキャッシュという仕組みが組み込まれています。

これは永続ではないオブジェクトキャッシュです
WordPressは一つのWebページを作成するとき、同じデータを複数回にわたって使用することがあります。
例えば『サイト名』がWebページ内の複数の箇所に表示されているケースなどです。
このとき、表示する度にデータベースからデータを取り出すのは非効率です。

だからWordPress側で記憶しておいて、次はデータベースを使用しなくて済みようになっています。
このとき使用するのがオブジェクトキャッシュです。
データベースから取り出したデータは、プログラム上で使用しやすいオブジェクトという形式に変換されます。変換後のオブジェクトはオブジェクトキャッシュに記憶されます。そして、データベースに同じ内容で問い合わせが行われたら、オブジェクトキャッシュからデータを取得します。


これで無駄が省けて
効率的にWebページが生成されます
WordPressはブラウザからWebページ要求が来るたびに、実行され、Webページを生成したら終了します。
オブジェクトキャッシュも、その度に作られ、そして破棄されます。
一時的に存在するため、永続ではありません。
ここではイメージしやすいように『サイト名』を例として挙げましたが、『サイト名』などのよく使う情報は別の仕組みで記憶されています。
永続的なオブジェクトキャッシュ
WordPressはオブジェクトキャッシュによって、一つのWebページ生成で同じ内容のデータベース要求を防ぐことができます。
ですが、以降のWebページ生成で、また同じ内容のデータベース要求がおこなわれます。これを防ぐ目的で使用されるのが、永続オブジェクトキャッシュです。
永続オブジェクトキャッシュは、データを記憶するプログラムを利用します。このプログラムはWordPressとは異なるプログラムなので、WordPressが終了しても動き続けます。
ここにデータベースから取得したデータを保管しておくことで、以降のデータベース要求を防ぐことができます。

永続オブジェクトキャッシュは、WordPressから見た言葉です。キャッシュプログラムは、受け取ったデータを記憶しているだけです。

コンピューターが停止するとキャッシュが消えるので
実施は永続ではないですね
なお、このページのオブジェクトキャッシュとはで、『データベースはWordPressと異なるプログラムなのでデータのやり取りに時間がかかる』と書きました。永続オブジェクトキャッシュのプログラムもWordPressと異なるプログラムなので時間がかかるのは同じです。
データベースはデータを記憶媒体に保存しています。WordPressからデータを要求されると、記憶媒体からメモリ上にデータを読み出します。これは、時間がかかる作業です。
一方のキャッシュプログラムはメモリ上に記憶します。そのためデータベースよりも高速で結果を得ることができます。
永続オブジェクトキャッシュの問題点
永続オブジェクトキャッシュは多くの問題がありますが、重要なのはサイトの規模や状況に合わせて適切な設定をおこなう必要がある点です。
適切な設定が行われないと、Webサイトの生成スピードが極端に遅くなったり、Webページが更新されてもブラウザへの配信内容が変更されないなどの問題がおこります。
また管理画面でもこの問題がおこるため、適切に更新作業を行うことが困難になります。
さらに永続オブジェクトキャッシュはメモリ上に保存されるため、サーバーのメモリ使用量が増えます。その結果、WordPressが使用できるメモリが減り、応答速度が極端に遅くなる可能性があります。
これらの問題が生じないか十分なテストが必要です。またテストをパスしても、状況の変化により新たな問題が発生する可能性があります。
一般のWebサイト管理者にとって、この問題に費やす労力はとても大きいです。
また永続オブジェクトキャッシュは大規模でアクセス数が多いサイトで効果を発揮します。規模の小さいサイトでは、永続オブジェクトキャッシュを利用する手間が増える分だけサイト生成の効率が落ちます。
レンタルサーバーで運営可能な規模のサイトでは、労力に対する効果を得るのは難しいでしょう。
LiteSpeed Cacheで対応可能
永続オブジェクトキャッシュの特性上、mixhostなどのレンタルサーバーで導入しても劇的な効果を得られません。ですがサイトヘルスで指定さえているので、対応してみます。
永続オブジェクトキャッシュは、専用のプラグインをインストールすることで利用できます。
mixhostで推奨しているLiteSpeed Cacheは永続オブジェクトキャッシュに対応しています。

罠が仕組んであるので
最後まで読んでね
永続オブジェクトキャッシュを有効にする
次の手順で永続オブジェクトキャッシュを有効にできます。
WordPressの管理画面で、LiteSpeed Cacheのキャッシュ設定ページを開きます。

[6] オブジェクトタブを開いて、オブジェクトキャッシュをオンにします。

『変更を保存』を押して保存します。
これでサイトヘルス画面を見ると、『永続オブジェクトキャッシュを使用してください』が表示されなくなります。


無事に永続オブジェクトキャッシュが利用できるようになりました!
永続オブジェクトキャッシュが動いていない!
サイトヘルス画面で『永続オブジェクトキャッシュを使用してください』が表示されなくなったのですが、実際には永続オブジェクトキャッシュは動作していません。
WordPressは永続オブジェクトキャッシュのプログラムとして『Memcached』と『Redis』を推奨しています。LiteSpeed Cacheもこの二つに対応しています。
しかし、LiteSpeed Cacheのキャッシュ設定ページを見ると、次のようになっています。

Memcached拡張機能が無効、Redis拡張機能が無効、そして接続テストに失敗しています。
その結果『プラグインが永続オブジェクト機能を有効にしたけれど実際の機能は使用できない』という状態になっています。

永続オブジェクトキャッシュが利用できるようになっていませんでした
MemcachedとRedisがインストールされていない
どうやらmixhostはMemcachedとRedisが利用できない状態になっているようです。これがないと、永続オブジェクトキャッシュを利用できません。
そこでmixhostサポートに『この機能を有効にできるのか』『ユーザー側でインストールしてよいか』を問い合わせてみました。
その結果がこちら。(該当部分だけ抜粋してあります)
MemcachedやRedisにつきましては、弊社サーバーの構成上、
ご利用に必要なモジュールを弊社側ならびにお客様側にて導入できかねますため、
ご利用できかねる次第でございます。
また、上記以外の代替手段も弊社側ではご提案が出来かねる状況でございます
つまり、『使えないし勝手に入れちゃだめよ』ということですね。
mixhostは永続オブジェクトキャッシュを利用できないようです。
永続オブジェクトキャッシュは必要ない
永続オブジェクトキャッシュの問題点で触れていますが、mixhost等のレンタルサーバーで構築できるレベルのWebサイトでは永続オブジェクトキャッシュの効果を期待できません。
そればかりか、場合によっては導入前よりも遅くなる可能性があります。
現在は記憶媒体のSSD化が進み、以前のハードディスクよりも読み込み速度が速くなっています。これによりデータベースからの応答速度も速くなっています。
このようなことから、永続オブジェクトキャッシュを導入するメリットはあまりありません。
「永続オブジェクトキャッシュを使用してください」を消す方法
永続オブジェクトキャッシュを導入するメリットはあまりないので、『永続オブジェクトキャッシュを使用してください』は放置しておいても問題ありません。
ですが指摘されていると気になる人も多いでしょう。
そこで表示を消す方法を紹介します。
次のコードを、function.phpまたは自作プラグインに記述してください。
add_filter('site_status_should_suggest_persistent_object_cache','__return_false');
他のサイトでも紹介されているコードですが、改善の余地がないのでそのまま記載しています。
次のファイルは、上記コードをプラグイン化したものです。
site_health_erase_obj_cache_problem.zip :
記述方法がわからない人はファイルをダウンロードして、新規プラグインとしてインストールしてください。
自作プラグインについては、次のリンク先ページの「6.8自作プラグインのひな型インストール」で簡単に解説しています。(記事更新により項番が変更されている可能性があります)
今後、WordPressをカスタマイズしていきたい人は、挑戦してみてください。
コードを記述して『サイトヘルス画面』を表示すると、次のように『永続オブジェクトキャッシュを使用してください』という項目が消去されます。

まとめ
ここではmixhostでインストールしたWordPressのサイトヘルス画面で『永続オブジェクトキャッシュを使用してください』と表示される問題についてお伝えしました。
実際には永続オブジェクトキャッシュの解説が多くを占めてしまいました。少し反省です。
mixhostは永続オブジェクトキャッシュを使用できません。ですがレンタルサーバーで構築可能な規模のサイトは永続オブジェクトキャッシュを導入しても、あまり効果がありません。場合によってはサイトのパフォーマンスが落ちる可能性があります。
そのため『永続オブジェクトキャッシュを使用してください』は放置しておいても問題ありません。