[WordPress] APCu オブジェクトキャッシュで高速化

高速化プラグインはいろいろありますが、オブジェクトキャッシュに特化したシンプルな APCu Object Cache Backend を使います。すこぶる高速。

このあとごちゃごちゃと御託を並べますが、最初に要点だけ書いておきます。

オブジェクトキャッシュで高速化

Xserver では オブジェクトキャッシュの APCu という仕組み(?)を利用できるそうなので、利用するために「APCu Object Cache Backend」をダウンロードして wp-content 内に置きました。結果、高速化半端なし。

この件について私が何か知見を持っているかというと 0 で、何の知識もありません。

WordPressでAPCuオブジェクトキャッシュを使う -フリースタイル
↑このページで知り、教えの通りのことをしたまでです。

  1. ファイルをダウンロード
    https://downloads.wordpress.org/plugin/apcu.1.0.2.zip
  2. ダウンロードしてきたファイルのobject-cache.phpを編集

    // こちらを先頭に追記 管理画面では使用しないようにするため
    if ( is_admin() ) { return false; }

  3. wp-contentディレクトリに編集したobject-cache.phpをアップロード

以上でオブジェクトキャッシュが有効になりますWordPressでAPCuオブジェクトキャッシュを使う -フリースタイル

詳しくはリンク先の記事をお読みください。

というわけで、ここから先は御託ですので読まなくてもいいですが、では行きます。

オブジェクトキャッシュ御託

Query Monitor 警告

WordPress で Query Monitor プラグインを利用していると、ときどき「遅いクエリ」という警告が出てきて「あなたの環境で APCu が利用できるからオブジェクトキャッシュを使えばいいよ」みたいなことを言われます。何のことやらわかりませんが、親切にも、WordPress の新規プラグイン画面で検索窓に「APCu」と入力までしてくれて、それで「APCu はオブジェクトキャッシュが使える仕組みのようなものだな」と理解出来ました。

オブジェクトキャッシュ

昔、オブジェクトキャッシュだけを行うプラグインを使っていましたが、いつしか消え去りました。確かに、あの頃オブジェクトキャッシュはよく効いた。今でもそれは変わらないのですね。

Xserver ではサーバー側で機能するオブジェクトキャッシュの機能が備わっていて、APC と OPcache が使えるという。APC/OPcacheについて – xerver に説明があります。

機能は備わってはいますが、実際に利用するには明示的に使用することを命じる必要があるとのことです。もちろん素人には命じることなどできません。

キャッシュプラグイン

そこでWordPressのプラグインを探します。Query Monitor が教えてくださった「APCu」での検索により、いくつかのプラグインがヒットしました。

しかし、多くが「最終更新3年前」とか、総合型キャッシュプラグインとか、インストール数20とか、あまり有効な結果とは思えません。

見つめていても仕方がないので、オブジェクトキャッシュに特化したように思えるプラグインをいくつかインストールして試しました。

Powered Cache 

インストール数もそこそこあるし、更新もされています。でもこれ、統合型のキャッシュプラグインでした。

実は普通のページキャッシュプラグインは「WP Fastest Cache」をご機嫌に使っています。

Powered Cache のオブジェクトキャッシュだけを有効にしようと試みましたが上手くいかず、Fastest Cache を無効化するしかありません。しばらく試しました。

結果、めちゃ遅くなりました。何をするのも糞詰まりを起こして1拍遅れる感じです。これは相性が悪いようでした。

APCu Manager

統合型はだめだ、APCオブジェクトキャッシュだけをオンにしたいのだ、と、次に試してみたのは APCu Manager というプラグイン。完全にAPCuに特化しているようなので期待しました。

結果、のけぞるレベルで遅くなりました。ページは現れないわ、現れてもクリックに反応するまでに数秒かかるわ反応してから表示されるまで十数秒かかるわで、いったい何が起きたのかというレベルで使い物にならぬ低速化に見舞われました。こちらも相当に相性が悪いようでした。

という感じで、APCu検索で出てくる公式公認のプラグインはどれもこれも壊滅状態で、ぜんぜん駄目、何もしないほうがましでした。例に挙げたプラグインを悪く言うつもりはございません。多分、他のプラグインあるいは自作のjavascriptやPHP、いろんなものとの相性が悪かっただけだと思います。

漠然と検索したら先生に巡り会えた

そんなわけで、サーバーレベルでのオブジェクトキャッシュを有効にする手段を探す旅に出ます。

まず Xserver が APC に対応しているという事実。Query Monitor が警告を出しているという事実。だから単純に「xsever wordpress apcu オブジェクトキャッシュ」で検索したら、一発で上記先生のページに出会えたというわけです。

APCu Object Cache Backend の謎

結果、高速化を果たして満足なわけですが、腑に落ちない点があります。それは、wp-content にインストールした APCu Object Cache Backend についてです。

これは一体何だろう、とURLを確認したら、https://downloads.wordpress.org/plugin/apcu.1.0.2.zip で、普通にWordPressのプラグインじゃん。とわかります。プラグインページを見てみました。すると…

apcu
APCu Object Cache Backend プラグインページ

「このプラグインは2019年9月7日に終了しておりダウンロードできません。この閉鎖は恒久的です」となっておりますよ。

先生のページは2021年に書かれていて、プラグイン配布停止後です。さらに、ダウンロードしたのは最終バージョン2.0.0ではなく 1.0.2 です。これはいったい、どういうことでしょうか。

(ここでいろいろ検索して読んでみた形跡)

いろいろ読んでみてわかってことは、さっぱりわからないということでした。APCu Object Cache Backend はプラグインとしては終わっていますが、現状、ちょっと変えることで使えていますので理解なきままですが、よしとしておきます。

キャッシュクリア

早速の追記ですが、ちょっとした問題も起きました。何か作業した後、反映されなくなりました。wodget の内容変更や関連ポストも無反応。

ははーん。これはキャッシュが居残ってるせいだな、とわかって、オブジェクトキャッシュをクリアしようとしましたがクリアする方法がわかりません。

APC Clear Cache

そこで、プラグイン「APC Clear Cache」をインストールしてみました。「ツール」から設定画面を表示すると Clear ボタンがあるだけという超シンプルプラグイン。早速オブジェクトキャッシュをクリアしてみたところ、関連記事が復活しました。これは素晴らしい。最終更新が2年前でも気にしない。

そもそも他にも、PHPを弄ったりCSSを弄ったりちょっと何かをする度にオブジェクトキャッシュをクリアしなければ何も反映されません。クリアボタンはマジよく使います。

ということで、頻繁なキャッシュクリアを心がけたり、他の弊害が出ないか監視しつつ、しばらく様子を見ます。

The Cache Purger

人間、贅沢にはすぐに慣れるもので、APC Clear Cache はとても良いのですが、ダッシュボードのツールからボタンに辿り着くのがとても面倒に思えてきます。もっと手早くクリア出来ないものかと少々探りましたら、 The Cache Purger なるプラグインがありました。

オブジェクトキャッシュのみならず、主なキャッシュプラグインが作るキャッシュをまとめてパージするという 乱暴者 優れものです。admin bar にもクリアのメニューが付き、アクセスも簡単。そもそも設定で「何か保存するとキャッシュパージ」と指定できるのでパージボタンすら触る必要ありません。これはいいですね。

と、思ったのもつかの間、ぜんぜん消えてくれないです。APC Clear Cache に戻しました。

コメント

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください