WordPress 永続オブジェクトキャッシュAPC設定を設定して高速化 (エックスサーバー)

概要説明

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[全ての静的ファイル]

上記設定で今のところ問題なく稼働できています

WordPress Developer Resources

関連機能

  1. Smart Custom Fieldsの定義をfunctions.phpで行う

  2. ブロックエディタを使用しない場合はブロックエディタ用のCSSを無効化

  3. 指定期間内に公開した記事タイトルに一括で新着表示をつける

サイドバー

よく使うカスタマイズ

最近の記事

アニメの名言集

ぜーんぶひっくるめてのお前なんだ
いいんだそれで

バガボンド
by 沢庵宗彭

Profile

PAGE TOP
Amazon プライム対象