IT関連

キャッシュ機能を活用することで、WordPressのパフォーマンスを最強する

キャッシュとは

WordPressは、HTMLで構成したサイトと違って動的にキャッシュを生成します。この仕組みにより、Webサイトの訪問数が増えれば増えるほど、サーバーの負荷が大きくなります。せっかくのサイトが人気になり、アクセス数が増えるとページ表示が遅くなってしまうのです。
これを回避するために有効なのが、キャッシュの活用です。簡単に言うと、動的なHTMLを事前に或いははじめてのアクセスしたときに作成しておいて、どこかに保存する。再度同じリクエストが来た時に、再度作成ではなくて、事前保存されたキャッシュファイルを直接に返せます。
それによって、リスポンスは早くなる。

具体的にキャッシュ技術は多様であり、例としてよく挙げられるのは

  • ファイルシステムのキャッシュ
  • Memcacheや、redisなどメモリサーバ
  • Alternative PHP Cacheなどキャッシュモジュール

ファイルシステムのキャッシュ

一番分かりやすいやり方です。キャッシュ内容をファイルの形でサーバのストレージ(ハードディスクなど)に保存し、リクエストされたときに、ストレージからファイルを読み込む方式です。

Memcacheや、redisなどメモリサーバ

Memcacheredisなどはメモリ系キャッシュサーバとしてよく挙げられる。以前から幅広く使われるのでWEBで検索すれば、関連情報は豊富です。

全ての情報をサーバのメモリに持たせて、ストレージから情報を取得する時間を省略して、瞬時返せるのは強みで、大規模なシステムによく採用されています。

Alternative PHP Cacheなどキャッシュモジュール

APC(Alternative PHP Cache)だけを限らず、WEBサーバに依存するキャッシュソリューションです。
一つ例として、Alternative PHP Cache (APC) は、PHP の実行コードをキャッシュする仕組みで、 フリーかつオープンに使用できます。PHP の中間コードのキャッシュ・最適化を 行うためのフリーでオープン、かつ堅牢なフレームワークを提供するという 考えのもとに作られています。

事前作成されたHTMLコンテンツはAPC仕組みで保存され、リクエストが来た時に、APC仕組みで返す方式です。

WordPressキャッシュプラグイン

WordPressキャッシュプラグインは沢山存在している。私はすべて検証したわけがないが、一応試したのは

今回は W3 Total Cache を例として、説明します。

W3 Total Cache プランインのインストール

WordPress管理画面で、プラグイン → 新規追加 → キーワード検索に「 W3 Total Cache 」を入力して、下記の画面が出てくる。

「今すぐインストール」ボタンを押して、少し時間がかかるかもしれませんが、その後、下記の画面が出てくる。

そして、「有効化」ボタンを押して、W3 Total Cacheを使える状態になります。管理画面の左側サイトバーに「パフォーマンス」というメニュが追加されます。

W3 Total Cache プランインの使用

Setup Guide で設定

最初は「Setup Guide」画面が出てくると思います。それを従って行ってください。

「Accept」ボタンを押して、Setup Guideを開始する。

「NEXT」を押して、

「Test Page Cache」ボタンを押して、

ここでWordPressサーバのベースで、ページキャッシュ状況を測定する。「Storage Engine」は使ったファイル保存方式、「Time」はそれぞれかかった時間になります。
Memcacheや、Redisに関しては関連PHPモジュールのインストールが必要です。インストールしないと測定できません。今回の検証サーバでインストールしてないので、測定できませんでした。興味がある方は、是非モジュールをインストして、テストしてください。但し、サーバを操作権限によってインストできない場合があります。
今回の測定結果として、「なし」で737.73msがかかったに対して、「ディスク:ベーシック」では24.02msになり、「ディスク:拡張」ではさらに23.31msになりました。その結果を見て、「 ディスク:拡張 」の結果は一番良くて、採用するべきです。

次は「データベースキャッシュをテスト」です。

サーバ状況で「なし」と「ディスク」しか測定できていません。その結果は「ディスク」の方がよかった。

W3 Total Cache ではObjectをキャッシュすることはかのうです。ここで測定してみます。

その結果、やはり、「ディスク」方式で性能が高がった。

最後のテストは 「Browser Cache」です。

「lazy Load Images」機能に利用もできます。もし他の「Lazy Load Images」プランインなどを使ってなければ、この機能もおすすめします。

これで、「Setup Guide」が完了した。

ページキャッシュ

「 ページキャッシュ」機能を更に説明します。
まず、「有効化」をチェックして、利用できるようにします。
「全ての設定を保存」を押してください。

実際、「ページキャッシュ」あり・なしでどのぐらいの影響があるかをテストしてみました。
テスト方法は、apache AB コマンドでそれぞれ2000回10ユーザで平行リクエストを行った。

MySqlプロセスの負荷は一番高くて、PHP-FPMプロセスが多数を起動された。LVも高いことはわかった。

返ってきた結果は以下になります。

結構悪い結果でしたね。1リクエスト平均1秒以上かかりました。
その原因の一つを考えられるのは、データベースのアクセスがネックになったこと。

そして、「データベースキャッシュ」も有効化すれば、状況改善できるでしょうか?やってみます。

また、同じABテストを行った。

今度は「MySql」プロセスが消えました。PHP-FPMプロセスは相変わらず多数が起動されました。

かえって来た結果をみると、

1リクエスト平均0.1秒ぐらいになりました。やはりMySqlのネックでした。

結論

テスト環境で測定した結果からみると、キャッシュなしとアリの場合、httpリスポンス性能は10倍以上のパフォーマンス差がありました。

コメント

タイトルとURLをコピーしました