【WordPress】Xserver でプラグインなしで APCu を使う方法

最終更新日: 公開日: 2023年03月

永続オブジェクトキャッシュの設定をすると記事を投稿,更新した際にキャッシュをクリアしないとプレビューなどの反映までに時間がかかる状態になっていた.

毎回クリアするというのでは使いにくいので何か良い方法はないかと思っていたところに,前に紹介した「W3 Total Cache」で「赤いお知らせ?」が出てきて,やっぱり邪魔なのでプラグインを使わない方法を探ることにした.

object-cache.php

探し始めたところ,すぐに見つかった.(感謝)

これを読めばプラグインを使わずとも行けることが分かったので,ちょっと改造することにした.

https://downloads.wordpress.org/plugin/apcu.1.0.2.zip

ダウンロードしてきて,中にある object-cache.php というファイルを wp-content の直下に置くだけだ.
実際,W3 Total Cache を入れていた時もこの object-cache.php というファイルは出来ていたのでオブジェクトキャッシュを使うときはこのファイルが必要らしい.

(2023/3/2)「WordPressでAPCuを使う」というページを見つけた.

その内容を参考に object-cache.php の先頭にいれるコードは以下のように変更した.

!defined( 'ABSPATH' ) and exit;
if (!function_exists('apcu_fetch')) {
  return false;
}
if (is_admin() && !($_SERVER["SCRIPT_NAME"] == "/[WordPressのインストールディレクトリ]/wp-admin/site-health.php")) {return false;}

一つ目は直接のアクセスを防ぐもの.
二つ目は APCu が使えないサーバーでもエラーになることはないので入れておく.(テスト用のローカルサーバーでも同一ファイルを使えるようにするため)
三つ目は管理画面ではキャッシュを効かないようにしつつ,サイトヘルスステータス画面で「永続オブジェクトキャッシュ」の警告を表示させないため.

しかし,ここまでだとキャッシュのクリアの方法に困る.そこで探してみると,

というプラグインが見つかったので,このプログラムの中身を確認してみる.
キャッシュをクリアしているところはすぐに見つかる.
そのまま拝借(感謝)してきて,以下のように functions.php に追記する.
まあ,apcu_clear_cache という関数があれば,それを使い,なければ,apc_clear_cache を使う.なければ諦めるということ.

function my_save_post($post) {
  if (function_exists('apcu_clear_cache')) {
    apcu_clear_cache();
  } else if (function_exists('apc_clear_cache')) {
    apc_clear_cache();
  }
}
add_action('save_post', 'my_save_post');

これで記事を「保存」したときに毎回,キャッシュをクリアしてくれるので記事がすぐに反映される.
ただ,全部消えてしまうのでイマイチといえばイマイチ.本当は記事単位でキャッシュを消した.

しかし,Xserver で高速化の設定をしている場合,このままでは記事を保存しても,すぐに反映されないので困る.

エックスサーバーの高速化の設定を変更

使いにくいので,どういう状態だと「下書き保存」しても問題なく更新されるのかを確認した.

結果としては以下の設定にしておけば「永続オブジェクトキャッシュ」の設定をしている状態でも更新が反映されるようになった.

Xアクセラレータ設定
Xアクセラレータ Ver.1
サーバーキャッシュ
ON
ブラウザキャッシュ
ON[全ての静的ファイル]

Xアクセラレータ Ver.2 を使うと APCu のキャッシュをクリアしてもすぐには反映されないようだ.

動いているのかの確認

動作確認は「永続オブジェクト」の警告が消えれば,とりあえずは動いているんだなというのは分かる.
キャッシュってどれくらい効いているのだろう?

いろいろ検索しているとそれを確認するツールを紹介しているところがあった.

APCu (※先ほどの参照サイトで紹介されていた)

ここの apc.php をダウンロードしてきて,ウェブサーバーの適当な場所に置く.

ちなみにエックスサーバーでは APCu と OPcache が有効らしい.

OPcache も何かないかと探してみると以下のページが見つかった.

OPcache (※PHP7.4でAPCuとOPcacheをインストールする方法 (感謝))

こちらも同様にダウンロードしてきて,ウェブサーバーの適当な場所に置く.
 

Contact

ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.

 
   
Chrome 拡張機能 PageSpeed Insights SEO WordPress Youtube お問い合わせフォーム アナリティクス アンケートフォーム サーチコンソール セミナー タグマネージャー データベース ヒアリング プラグイン ページ閲覧解析 マーケティング メール配信 リッチリザルト レスポンシブ対応 ログ解析 勉強会 商品企画 営業 営業力 営業支援システム 実装 検索順位 検索順位チェックツール 追跡 開発者ツール
contact
Pagetop