WordPressの便利さは大変すばらしいが、速度の遅さもすばらしい(すばらしく遅い)。もっとも・・・遅いといっても大量のデータを投稿してあれば、の話でもあるわけだが。
この遅い状況を改善する方法を考察してみた。もちろんボトルネックの洗い出しなので、WordPressよりも低次元なレベルから考えなくてはいけない。できるかできないかは別にして列挙する。
(0) インフラの高速化
WordPressが設置してあるサーバの回線環境を高速化する。もちろんレンタルサーバでは無理。一番実現できなさそうな部分ではある。
(1) ハードウェアの高速化
レンタルサーバでは無理な話。CPUの高速化はもちろんだけれど、もっとボトルネックになりそうなのがハードディスク。ストライピングを組み合わせられればかなり早くなるはず。
(2) MySQLのキャッシュ機能を利用
MySQLを適切な設定にするのはもちろんだが、キャッシュ機能を利用して、MySQLへの接続回数を減らすという方法だ。これはかなり有効だろう。しかし、この方法は専用サーバなら可能だが、レンタルサーバでは無理だ。具体的な設定箇所は「query-cache-type」や「query-cache-size」など。
(3) PHPのキャッシュ機能を利用
PHPはリクエストの都度コンパイルされる言語だ。つまりコンパイルの時間がボトルネック。だからeAcceleratorなどを組み込んでみる価値はある。もちろん専用サーバではできるが、レンタルサーバでは無理(事前に組み込まれているレンタルサーバなら問題ない)。ただし、これはアクセス数が多い場合には有効だが、そもそもアクセス数が少なければ効果が薄そうだ。
(4) WordPressのキャッシュ機能を利用
WordPressはリクエストを受けると、PHPファイルがコンパイルされ、MySQLに接続し、データを取得して表示する、という流れだ。つまりリクエストの都度MySQLに接続するので、当然MySQLが遅い場合は表示が遅くなる。だからMySQLに接続して取得したデータをキャッシュしておき、毎回データベースに接続するのをやめれば高速化が図れる。
この方法はそもそもMySQLに機能として含まれている(ただしデフォルトでは無効化されている)。この機能を有効化するには以下の作業をおこなう。
・ディレクトリ「wp-content/cache」を作成し、パーミッションは777。
・設定ファイル「wp-config.php」に以下の一行を追加(一番上がいい)。
define(‘ENABLE_CACHE’,true);
(5) ページ単位でキャッシュする(プラグインの利用)
(4)を導入するとデータベースへの接続は減少する(無しにはならない)。しかしPHPがデータを組み立てる処理はその都度実行される。ページの組み立て作業そのものをキャッシュするのがプラグインwp-cacheだ。つまりいったん表示されたページの出力内容そのものをキャッシュしておき、次回から同じURLへのアクセスがあると、複雑な処理(データの取得やデータの組み立て)は一切スキップして、キャッシュした内容を表示するのだ。
高速化の方法は大体こんな感じ。後は不必要なプラグインは削除したり、テーマ内でのプログラム処理を極力減らすなどの努力は必要だろう。