Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

WordPress高速化への道

2008/03/28 | SNS/CMS/ブログ

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524

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へのアクセスがあると、複雑な処理(データの取得やデータの組み立て)は一切スキップして、キャッシュした内容を表示するのだ。

高速化の方法は大体こんな感じ。後は不必要なプラグインは削除したり、テーマ内でのプログラム処理を極力減らすなどの努力は必要だろう。

コメントを残す



Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524
守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net

Warning: Use of undefined constant user_level - assumed 'user_level' (this will throw an Error in a future version of PHP) in /home/usaken/tekmemo.com/public_html/php/wp-content/plugins/ultimate_ga_1.6.0.php on line 524