永続オブジェクトキャッシュを使用してください
サイトヘルスの「おすすめ改善」に次のように表示されています。
あくまで「おすすめ」であって、やらなければならいなというものではないようですが、読み込み時間が短縮されてパフォーマンスの改善につながるようですから試してみたいと思っていました。でも、難しそうに思えたので放置していたのですが、よく見るとAPCuという機構がサポートされているとあります。
今使っているレンタルサーバはエックスサーバーですので、そちらのヘルプを見てみるとAPCというものがあります。
APCuではなくてAPCなのが気にはなります。調べてみたところ、最初はAPCだったものが、APCuとOPcacheに分割・移行したという経緯があるそうです。
ということで、エックスサーバーのヘルプの表記はAPC/OPcacheですが、WordPressでの判定でもAPCuと表示されていることですし、APCuがサポートされていると思ってよいのでしょう。
プラグイン
Query Monitor
プラグインを探してみたら、ずばり、APCu Managerというものがありました。それを入れれば良さそうですが、その前に、効果を測るためのQuery Monitorというプラグインをインストールします。
これをインストールして有効化すると、上のメニューにこのようにな表示が出ます。
これは、このブログのあるページを表示したときのものです。詳細は端折りますが、次の意味のようです。
- ページ生成時間: 0.41s
- 最大メモリ使用量: 42.8MB
- データベースアクセス時間: 0.07s
- データベースクエリ数: 226
これがAPCu(永続オブジェクトキャッシュ)を使用する前の状態です。
APCu Manager
続いて、APCu Managerをインストールして有効化します。
設定の在り処がちょっと分かりづらいです。
APCu ManagerはPerfOps Oneというツール群の一つのようで、その中にあります。Control Centerを開きます。
APCu Managerの中のsttingsをクリックします。または、インストール済みプラグイン一覧にもSettingsのリンクがあるので、それをクリックしてもOKです。
いくつかオプションがありますが、一番上のObject cacheがAPCuを使うか否かのチェックボックスです。Activated(有効化)をチェックします。Garbage collectorはキャッシュデータが有効期限切れになったときにすぐにそのゴミを消すもののようです。これもチェックしておくことにします。Analyticsは分析ができるものでしょう。一応、チェックしておきます。
「変更を保存」します。
効果
では、効果を確認します。先程のQuery Monitorの表示を再掲します。
続いて、こちらがAPCuを有効化したあとの測定結果。
データベースのクエリ数(問合せ回数)が226から13へと激減しています。それにともなって、ページ生成時間が0.41sから0.35sに減っています。
APCuによる効果がハッキリと出ています。
また、Analyticsを有効化しておいたので、このような分析画面が見られます。
このように見られるのですけど、見方がわからないので豚に真珠な状態です。
問題点
この確認作業を行っている中で、いくつかの問題に遭遇しました。と言っても、APCu Managerの問題ではなくて、Query Monitorを使うことによって生じるトラブルです。次のようなエラーが表示されてしまいます。
メッセージ画から判断すると、目次表示プラグイン(Top Table of contents)がエラーを出しているようです。目次が表示されるページ(一定数以上の見出しがあるページ)ではエラーは出ないのですが、目次が表示されないページでこれが表示されてしまいます。また、WordPressにログインしている状態だとエラーは出ません(お陰で気づくのに時間がかかりました)。
このTop Table of contentsのエラーは、Top Table of contentsのバージョンアップ(1.3.4)で解消されました。
リリースノートには1.3.4では新機能の追加だけということになっているので詳細はわかりません。ともかく、このバージョンアップによってQuery Monitorと一緒に使うことで生じていてトラブルは解消しました。
また、ダッシュボード上のGoogle Site Kitが表示されなくなりました。
枠は出るのですけど、中身が見えません。これも厄介なことに、Firefoxでは起きるけどChromeでは通常に表示されます。
いずれにしても、Query MonitorはAPCuの効果を見るために入れただけですので、通常時は不要です。無効化しました。
まとめ
APCuを使うとデータベースのクエリ数が激減することが確認できました。とは言え、ページ生成にかかる時間は、0.41sだったものが0.35sになり、0.06s減っただけとも言えます。これを大きいと見るか、大きくないと見るかは微妙な気もします。体感的にもページが表示される時間に違いはありませんし。
悪くなるわけではないようですので、このまま運用してみることにします。もし、不具合が出るようならやめてもいいかなと思います。