K4750.NET

WPLANG変更によるWordPressの高速化

wp-config.phpのWPLANGの値の変更によるWordPressの高速化(高速化ネタその1の続き)。結論から言うと、レスポンスタイムが、APC(Alternative PHP Cache)を導入した状態からさらに約3割削減となった(1297.319ミリ秒→886.885ミリ秒)。ようやくレスポンスタイムが1秒を切ったことになる。


1.プロファイリング

XHProfを使用して、処理に時間がかかっているファンクションを調査してみると、wp-settings.phpから呼び出されるload_default_textdomainの処理時間が、全体の処理時間の35%を占めていることが判明。

このファンクションはwp-config.phpWPLANG定数の設定値に従い、wp-content/languages/ja.moファイル等を読み込む処理である。このja.moファイルは、簡単に言うと英→日の辞書であり、WordPressはこの辞書を使用して管理画面等を日本語表示する。

本サイトはテーマを自作しており、また、この翻訳機構を必須とするプラグインも導入していないため、ja.moの読み込みは無用である。よって、このファイルを読み込まないよう設定することとした。


2.WPLANG定数の変更

wp-config.phpWPLANG定数の値をja(日本語)にするとja.moファイルを読み込んでしまうので、違う値(en(英語))に変更する。ただし、管理画面は日本語表示したいので、ここを参考に、WPLANG定数の定義を以下のように書き換える。

if (strpos($_SERVER['REQUEST_URI'], '/wp-admin/') === 0) {
    define ('WPLANG', 'ja');
} else {
    define ('WPLANG', 'en');
}

3.ab(ApacheBench)の結果

abコマンド(ab -c 20 -n 200 http://www.k4750.net/(20多重で200リクエスト))の実行結果について、前回(APCの導入)との比較を以下に示す。

テスト時間(秒) 秒間リクエスト数 リクエスト時間
(ミリ秒)(平均)
初期状態 26.370 7.58 2637.035
APC導入後 12.973 15.42 1297.319
WPLANG変更後 8.869 22.55 886.885

4.余談

ja.moは使用しつつレスポンスタイムを低下させない方法としてMO CacheというWordPressプラグインを使用する選択肢もあるようだが、本サイトではその必要がなかったので、上記対応を行うこととした。