サイトヘルスステータス – 永続オブジェクトキャッシュを使用してください

エックスサーバーでは「APCu」が標準で利用できるようなので対応してみる
【2026 年 10 月の追記・注意】エックスサーバーの APCu は、PHP の処理(プロセス)ごとに別々のキャッシュになることがあります。その場合、記事を保存してキャッシュを消しても、ほかのプロセスのキャッシュは残り、古い内容が出ることがあります。試すときは、表示がおかしくないかをよく確認し、おかしければ wp-content/object-cache.php を消して元に戻してください。
エックスサーバー公式ページ
キャッシュ用のファイルをダウンロード
https://downloads.wordpress.org/plugin/apcu.1.0.2.zip
object-cache.php 修正
// 直接ファイルにアクセスしたらエラーになる処理
!defined( 'ABSPATH' ) and exit;
// ACPに対応していないサーバーではキャッシュを使用しない
if (!function_exists('apcu_fetch')) {
return false;
}
// 管理画面はキャッシュ対象外(ヘルスチェックページは対象)
if (is_admin() && !($_SERVER['SCRIPT_NAME'] == '/wp-admin/site-health.php')) {
return false;
}
// WordPressにログインしている場合はキャッシュクリア
$login_flag = 0;
foreach ($_COOKIE as $key => $value){
if (false !== strpos($key, 'wordpress_logged_in_')) {
$login_flag = 1;
}
}
if ( $login_flag ) {
if (function_exists('apcu_clear_cache')) {
apcu_clear_cache();
} else if (function_exists('apc_clear_cache')) {
apc_clear_cache();
}
}
object-cache.php ファイルの先頭に上記を追加
※ この書き換えには注意があります。管理画面でキャッシュを使わないと、管理画面で変えた設定(メニュー・ウィジェットなど)が表のページのキャッシュに反映されず、古い内容が出続けることがあります。また、ログイン中は表のページを開くたびに全部消えるので、キャッシュの意味が薄くなります。オブジェクトキャッシュは全部の処理で同じものを使う前提なので、ファイルは手を加えずにそのまま使うほうが安全です。
ファイルアップロード
/wp-content/object-cache.php
記事編集時にもキャッシュをクリアするように修正
/*----------------------------------------------------
APCキャッシュを記事編集時に全てクリアする
----------------------------------------------------*/
if ( !function_exists( 'apc_clear_cache_post' ) ){
function apc_clear_cache_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', 'apc_clear_cache_post');
}
Query Monitor プラグインを使用して動作確認

オブジェクトキャッシュ無効

オブジェクトキャッシュ有効
「ログインしている場合はキャッシュクリア」の部分をコメントアウトしてQuery Monitorにてキャッシュ有効時の値が確認できます
エックスサーバー側のキャッシュ設定
| Xアクセラレータ |
Xアクセラレータ Ver.1 |
|---|---|
| サーバーキャッシュ |
ON |
| ブラウザキャッシュ |
ON[全ての静的ファイル] |
上記設定で今のところ問題なく稼働できています

