あなたはどうやってキャッシュ系プラグインを選んでいますか?

 

WordPressで運営しているブログを高速化するためには、キャッシュ系のプラグインを導入すると良いよ!確かにその通り。でも、じゃあどうやってキャッシュ系のプラグインを選ぶと良いかちゃんと知っていますか?

有名なあの人の記事でこのプラグインがオススメ!って書いてあったから即導入してやったで~って人はいませんか?

こっちのプラグインはダメだったから、別のやつ入れよ~っていろいろ試すうちに、なんか逆に重たくなっちゃったけど、もう諦めたぜ!とかなっちゃったらどうしますか?

キャッシュ系のプラグインは、その効果が絶大であるがゆえに、細心の注意を払って、しっかりバックアップを取った後、ちゃんとテストしてから導入しなければなりません。今回は、キャッシュ系プラグインがそもそも「何」を解決するためのものなのか、どうやって選べば良いのかについて考えてみましょう。

 

WordPressの6つのプロセスとキャッシュによる高速化の仕組み

知らないと損する!WordPress高速化の10のルールと14の方法』という記事でも書きましたが、WordPressはざっくり分けると6つのプロセスで動いています。

wordpress-speeding-up-02

なので、WordPressにおいて高速化のためにキャッシュする、ということは、それぞれのプロセスについてキャッシュ(処理の記憶/データの圧縮/プロセスの効率化)する、ということになります。

それぞれのプロセスのキャッシュ方式を詳しく説明します。

 

必要なページのリクエスト

ユーザーがWebサーバーに対して「このページが見たい」とリクエストするプロセスを高速化する方法がブラウザキャッシュです。

1度目のアクセスの際、ユーザーの利用しているブラウザに対して、ページの情報を保存させます。2度目以降のアクセスの際には、まずWebサーバーに対して内容の変更が有ったか問い合わせ、もし変更がない場合にはブラウザに保存しているページデータをそのまま読み込む。そうすることで、わざわざ通信し、プログラムを走らせ、ページを生成する、というプロセスがなくなるので、高速化に繋がるというわけです。

 

WordPressがリクエストを変換(コンパイル)

WordPressが「このページを見たい」というリクエストを処理(コンパイル)するプロセスを高速化する方法がオブジェクトキャッシュです。

コンパイルのキャッシュ方法としては、WordPressにもともと備わっているWP_Object_Cache という関数を使ってWordPress自体の処理を記憶&呼び出すことで高速化する方法と、PHPの動きそのものを高速化する方法が有ります。

 

データベースへ問い合わせ(PHP)

データベースへの問い合わせプロセスを高速化する方法が、データベースキャッシュです。

WordPressがデータベース(MySQL)からデータを引き出す際、その出力結果を記憶しておき、同じような処理を要求された時に再利用することで、データベースへの問い合わせ回数を減らし高速化します。

 

データを読み込み

各リソースを呼び出すプロセスを高速化する方法がリソースキャッシュです。

わかりやすく言うと、HTML/CSS/JavaScriptの圧縮(Minify)ですね。複数のファイルを1つにまとめたり、ファイルの中の不要な改行やインデントを削除することで、データを読み込む回数を減らしたり、読み込むデータそのものを小さくすることで高速化を目指します。

 

HTMLを生成

ページ(HTML)を生成するプロセスを高速化する方法がPHPキャッシュです。

データベースへの問い合わせでも軽く触れましたが、WordPressはPHPで動いています。なので、そのプロセスを記憶して再利用することで、同じ処理の効率化をはかることで高速化する、というわけです。

 

必要なページをレスポンス

Webサーバーから「このページが見たい」というリクエストに対してレスポンスが帰ってくるプロセスを高速化する方法がページキャッシュです。

Webサーバー(Apacheなど)には、動的に生成されたページをまるごと圧縮する機能が付いています。この機能を有効化することで、最終的なページのサイズを縮小化し、最終的なページの受け取りデータを少なくすることで高速化します。また、WordPressに限って言えば、プラグインを使って、生成されたページ自体を保存しておく方法もあります。

 

スポンサーリンク

各キャッシュを導入する方法

ブラウザキャッシュ

[難易度:低]

ブラウザに対して、今読み込んでいるページをキャッシュ(保存)しておいてね、と指示するために.htaccessWordPressプラグインを利用することになります。

プラグインとして有名なのは、W3 Total CacheWP Fastest Cacheなどです。注意点としては、ブラウザがページデータを保存する関係で、CSSなどを変更した場合にすぐに反映されない可能性があります。

 

オブジェクトキャッシュ

[難易度:中]

基本的にはWordPressプラグインでの導入とPHPの高速化の2つの方法が有ります。

プラグインとしてはW3 Total CacheAPC Object Cache Backendが有名ですね。PHPの高速化としては、サーバーに「FastCGI」や「APC(Alternative PHP Cache)」の機能が備わっていれば導入可能です。プラグインはサーバーにかかわらず導入できるものの、動作中のPHPのプロセスを効率化するために、一定のサーバースペックが必要なのを覚えておきましょう。

 

データベースキャッシュ

[難易度:高]

データベースの動作プロセスを効率化する、ということでWordPressがデータベースにアクセスする時の動作を記憶しておき、同じような動作をする新規作成やページ更新時に効果を発揮します。

プラグインとしてはW3 Total CacheWP File CacheWP-Optimizeなどがあります。ただし、Webサーバーにちゃんとデータベースの効率化の機能があるかどうか、また、他のプロセスのキャッシュと連携できるかなど、調整がかなりシビアなので、常に同じようなプロセスでデータベースと通信するフォーラム系のサイトやコメントがたくさんつくようなブログでないと、その効果は実感できないかもしれません。

 

リソースキャッシュ

[難易度:低/ただしプラグインの入れすぎに注意]

HTML/CSS/JavaScriptを圧縮するために、テンプレートやCSSのファイルを直接編集する方法と、WordPressプラグインを導入する方法があります。

プラグインとして有名なのはW3 Total CacheWP Fastest CacheHead CleanerWP Minifyなどがあります。注意点としては、いろんなプラグインを導入していると、それぞれのプラグインでCSSやJavaScriptが追加されていることがあります。この時、変数が競合して、表示が崩れたり、上手く動かなくなったりする可能性があるので、プラグインの入れすぎは厳禁ですね。

 

PHPキャッシュ

[難易度:低/サーバー環境による]

WebサーバーにFastCGIAPC(Alternative PHP Cache)などの機能が付いている場合に限り導入可能です。上記のオブジェクトキャッシュの導入の中で、APC Object Cache Backendというプラグインを紹介しましたが、最終更新日が2年前ということで、導入は自己責任でお願いします。

 

ページキャッシュ

[難易度:低]

サーバーの圧縮機能を有効にする、ということで.htaccessを利用する方法と、WordPressプラグインを利用する方法があります。

プラグインとして有名なのは、W3 Total CacheWP Super CacheWP Fastest Cacheなどですね。ただし、プラグインでのページのキャッシュを実現する場合、Webサーバー内にキャッシュデータを保存するフォルダが作成されます。もし「やっぱり使うの止めよう」と思った時に、正しい手順でアンインストールしないと、トラブルが発生する可能性があるので注意しましょう。

 

 

スポンサーリンク

全部のプラグインを導入すればどんどん高速化する、というわけでは無い

WordPressが高速化する(=素早くページが表示される)ためには、

  • ページの容量を小さくする
  • データのリクエスト数を減らす

という2つが重要です。しかしながら、導入しているテーマによっては、画像を多く使うもの、動きのあるコンテンツを表示するもの、など制約もあります。

WordPressは本当に便利なシステムで、それぞれのプラグインを導入することで、誰もが高速化を実現することができます。ただし、あれもこれもと導入してしまうと、機能が競合したり、逆に遅くなったりすることもあるかもしれません。

なので、プラグインを導入するときには、必ず、

  • バックアップを取る
  • テスト環境で試してみる
  • 導入するときは1個ずつ

ということを徹底し、自分の環境に合わせた調整をしましょう。

 

じゃあ結局どれを導入すれば良いの?

僕個人の見解ですが、

といったところでしょうか。

導入方法の紹介で気がついた方もいるかと思いますが、キャッシュ系のプラグインの中で、最も対応範囲が広いのはPHPキャッシュ以外のすべてに対応しているW3 Total Cacheです。しかし、その分、設定項目も非常に多いため、それぞれの項目がどの部分を解決してくれるのか、ちゃんと理解しながら設定しないと、思った効果が出ません。なので、ある程度、導入する機能を自分で取捨選択できる中級者にオススメのプラグインになります。

一方で、まだブログを始めたばかり、とか、HTML/CSSとかわかりません、という初心者へはリソースキャッシュページキャッシュブラウザキャッシュを非常に簡単に導入できるWP Fastest Cacheのほうが、手軽で確実です。

最後に、W3 Total Cacheがすべてを一括で管理する分、プラグイン自体がちょっと重たいので、上級者であれば一つ一つのキャッシュ機能について、より効果が高いものを探す、というのも1つの手です。

 

TSUNJI(@tsunji1983)的まとめ

自分自身がWordPressを高速化したいと思いたち、いろんなブログを見てきましたが、どれが正解なの?ということで迷ってしまいました。テスト環境を用意して、いくつかのプラグインを導入した場合の結果について比較してみたりもしましたが、やっぱり分からないまま。

そこで、まずは原理原則を理解しよう、ということで、WordPressの仕組みと高速化するための方法について整理してみました。

参考:知らないと損する!WordPress高速化の10のルールと14の方法

そこで今回は、高速化の方法の中で、とくにキャッシュ系のプラグインの導入について考察してみた、というわけです。近日中にはプラグイン導入に伴う結果の比較記事もアップ予定ですので、よければよちらもご覧ください。(※本日2月15日時点では、まだ高速化していないので、当ブログをPageSpeed Insightとかで調べてがっかりしないでくださいね…)

 

以上、TSUNJI(@tsunji1983)でした!

 

2月20日追記

実際にキャッシュ系プラグインを入れてみた結果記事をUPしました。