概要説明
WordPressの永続オブジェクトキャッシュ対応。エックスサーバーでは標準でapcが使用可能。サーバーのキャッシュ周りの設定によっては動作が安定しない場合があります。
~ 目次 ~
サイトヘルスステータス – 永続オブジェクトキャッシュを使用してください
エックスサーバーでは「APCu」が標準で利用できるようなので対応してみる
エックスサーバー公式ページ
キャッシュ用のファイルをダウンロード
object-cache.php 修正
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 ファイルの先頭に上記を追加
ファイルアップロード
path
/wp-content/object-cache.php
記事編集時にもキャッシュをクリアするように修正
functions.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[全ての静的ファイル] |
上記設定で今のところ問題なく稼働できています