プラグインなしでページキャッシュを高速化する方法

この記事では、プラグインを使わずにWordPressサイトのページキャッシュを高速化する方法を解説します。サーバー負荷を減らし、表示速度を改善することができます。

1 ページキャッシュとは?

WordPress などの動的サイトは、ページを見るたびに PHP がデータベースから記事や設定を読み込み、HTML を組み立てます。
これにはサーバー処理が必要なので、アクセスが多いと重くなります。

ページキャッシュ はその「生成済みのHTML」を保存しておき、次の訪問者には PHP や DB を経由せずに HTML を直接返す仕組みです。

例:

  • 初回アクセス → PHP + DB でページ生成 → キャッシュ保存
  • 2回目以降 → 保存済みキャッシュを返す → 高速表示

2 実装のポイント

  • ページキャッシュを自動生成して次回アクセス時に高速表示
  • 軽量なPHPコードでプラグイン依存をなくす

3 functions.php にコードを追加


//-------------------------------------------
// ページキャッシュを生成
//-------------------------------------------
function simple_page_cache() {
    // ログインユーザーはスキップ
    if (is_user_logged_in()) return;

    $cache_dir = ABSPATH . 'wp-content/cache/';
    if (!file_exists($cache_dir)) mkdir($cache_dir, 0755, true);

    $cache_file = $cache_dir . md5($_SERVER['REQUEST_URI']) . '.html';

    // キャッシュがある場合は出力
    if (file_exists($cache_file) && time() - filemtime($cache_file) < 3600) {
        readfile($cache_file); // exit の代わりに readfile
        return; // exit ではなく return
    } else {
        ob_start(function($buffer) use ($cache_file) {
            file_put_contents($cache_file, $buffer);
            return $buffer;
        });
    }
}
add_action('template_redirect', 'simple_page_cache');

// 投稿・固定ページ更新時にキャッシュ削除
function clear_page_cache_on_save($post_id) {
    $cache_dir = ABSPATH . 'wp-content/cache/';
    if (is_dir($cache_dir)) {
        foreach (glob($cache_dir . '*.html') as $file) {
            unlink($file);
        }
    }
}
add_action('save_post', 'clear_page_cache_on_save');
  
補足:
このコードは静的ページのキャッシュ用です。ログイン中のユーザーや動的コンテンツには向きません。テーマやプラグインのフックを使用して動的部分を除外することをおすすめします。

4 確認方法

wp-content/cache/ の中にファイルがあれば、キャッシュが働いています。

具体的には、初回アクセス後にファイルが生成され、2回目以降のアクセスで表示が速くなることを目安にしてください。

ブラウザの開発者ツール(F12 → ネットワークタブ)で読み込み時間を比較すると、より明確に確認できます。

5 代用プラグイン

  • WP Super Cache
  • W3 Total Cache
  • LiteSpeed Cache(サーバー対応時)

6 まとめ

プラグインなしでも簡単にページキャッシュを作成でき、サーバー負荷や表示速度の改善に役立ちます。ログインユーザーや動的コンテンツの扱いには注意してください。

※注意:キャッシュを削除すると一時的にページの表示速度が低下する場合があります。