カテゴリー
ブログ

WordPressでAPCuを使う

はじめに

レンタルサーバー(エックスサーバー)で APCu というデータキャッシュが使えるようになっているので、これを WordPress で使うために何をすればよいかを調べた(結論からいうととても簡単だった)。

  1. APC/OPcacheについて(エックスサーバー)
  2. APC User Cache(PHP マニュアル)
  3. Class Reference/WP Object Cache (WordPress Codex)
  4. l3rady/WordPress-APC-Object-Cache (GitHub)

3. は WordPress Codex 内で唯一APCuに言及しているページ。4. はそのなかで「APCuを用いてWordPress オブジェクトキャッシュに永続的なバックエンドを提供する」と紹介されていたページ。

キャッシュ関連関数 wp_cache_*() をAPCu版に置き換える

4. には object-cache.php と README 文書しかない。README 文書を読むと、object-cache.php を /wp-content フォルダーに置けとだけ書いてある。

これだけでなぜ動くのか。調べてみると、wp_start_object_cache() 内で/wp-content/object-cache.php があれば読み込むようになっていた。

if ( $first_init ) {
        if ( ! function_exists( 'wp_cache_init' ) ) {
            if ( file_exists( WP_CONTENT_DIR . '/object-cache.php' ) ) {
                require_once WP_CONTENT_DIR . '/object-cache.php';

この仕組みによって wp_cache_add() などの標準関数を外部関数に置き換えることができる。この仕組みは drop-in と命名されているらしい。_get_dropins() を呼び出すと一覧できる模様。シングルサイトでは8種のドロップインがあるようだ。

APCuの使われ具合を確認する

APCuを使うだけならば、以上。APCuの働き具合を確認するためのファイルも簡単に設置できる。

APCu のソースコード krakjoe/apcu: APCu – APC User Cache (GitHub) に同梱されている apc.php というファイルを Web サーバーのどこかに置けばよい。