2016/02/03
あなたはどうやってキャッシュ系プラグインを選んでいますか?
WordPressで運営しているブログを高速化するためには、キャッシュ系のプラグインを導入すると良いよ!確かにその通り。でも、じゃあどうやってキャッシュ系のプラグインを選ぶと良いかちゃんと知っていますか?
有名なあの人の記事でこのプラグインがオススメ!って書いてあったから即導入してやったで~って人はいませんか?
こっちのプラグインはダメだったから、別のやつ入れよ~っていろいろ試すうちに、なんか逆に重たくなっちゃったけど、もう諦めたぜ!とかなっちゃったらどうしますか?
キャッシュ系のプラグインは、その効果が絶大であるがゆえに、細心の注意を払って、しっかりバックアップを取った後、ちゃんとテストしてから導入しなければなりません。今回は、キャッシュ系プラグインがそもそも「何」を解決するためのものなのか、どうやって選べば良いのかについて考えてみましょう。
sponsored link
さくっと目次で内容を確認
WordPressの6つのプロセスとキャッシュによる高速化の仕組み
『 知らないと損する!WordPress高速化の10のルールと14の方法 』という記事でも書きましたが、WordPressはざっくり分けると6つのプロセスで動いています。
なので、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に限って言えば、プラグインを使って、生成されたページ自体を保存しておく方法もあります。
各キャッシュを導入する方法
ブラウザキャッシュ
[難易度:低]
ブラウザに対して、今読み込んでいるページをキャッシュ(保存)しておいてね、と指示するために「 .htaccess 」か「 WordPressプラグイン 」を利用することになります。
プラグインとして有名なのは、「 W3 Total Cache 」「 WP Fastest Cache 」などです。注意点としては、ブラウザがページデータを保存する関係で、CSSなどを変更した場合にすぐに反映されない可能性があります。
オブジェクトキャッシュ
[難易度:中]
基本的には「 WordPressプラグイン 」での導入と「 PHPの高速化 」の2つの方法が有ります。
プラグインとしては「 W3 Total Cache 」「 APC Object Cache Backend 」が有名ですね。PHPの高速化としては、サーバーに「FastCGI」や「APC(Alternative PHP Cache)」の機能が備わっていれば導入可能です。プラグインはサーバーにかかわらず導入できるものの、動作中のPHPのプロセスを効率化するために、一定のサーバースペックが必要なのを覚えておきましょう。
データベースキャッシュ
[難易度:高]
データベースの動作プロセスを効率化する、ということでWordPressがデータベースにアクセスする時の動作を記憶しておき、同じような動作をする新規作成やページ更新時に効果を発揮します。
プラグインとしては「 W3 Total Cache 」「 WP File Cache 」「 WP-Optimize 」などがあります。ただし、Webサーバーにちゃんとデータベースの効率化の機能があるかどうか、また、他のプロセスのキャッシュと連携できるかなど、調整がかなりシビアなので、常に同じようなプロセスでデータベースと通信するフォーラム系のサイトやコメントがたくさんつくようなブログでないと、その効果は実感できないかもしれません。
リソースキャッシュ
[難易度:低/ただしプラグインの入れすぎに注意]
HTML/CSS/JavaScriptを圧縮するために、テンプレートやCSSの「 ファイルを直接編集 」する方法と、「 WordPressプラグイン 」を導入する方法があります。
プラグインとして有名なのは「 W3 Total Cache 」「 WP Fastest Cache 」「 Head Cleaner 」「 WP Minify 」などがあります。注意点としては、いろんなプラグインを導入していると、それぞれのプラグインでCSSやJavaScriptが追加されていることがあります。この時、変数が競合して、表示が崩れたり、上手く動かなくなったりする可能性があるので、プラグインの入れすぎは厳禁ですね。
PHPキャッシュ
[難易度:低/サーバー環境による]
Webサーバーに「 FastCGI 」や「 APC(Alternative PHP Cache) 」などの機能が付いている場合に限り導入可能です。上記のオブジェクトキャッシュの導入の中で、APC Object Cache Backend 」というプラグインを紹介しましたが、最終更新日が2年前ということで、導入は自己責任でお願いします。
ページキャッシュ
[難易度:低]
サーバーの圧縮機能を有効にする、ということで「 .htaccess 」を利用する方法と、「 WordPressプラグイン 」を利用する方法があります。
プラグインとして有名なのは、「 W3 Total Cache 」「 WP Super Cache 」「 WP Fastest Cache 」などですね。ただし、プラグインでのページのキャッシュを実現する場合、Webサーバー内にキャッシュデータを保存するフォルダが作成されます。もし「やっぱり使うの止めよう」と思った時に、正しい手順でアンインストールしないと、トラブルが発生する可能性があるので注意しましょう。
全部のプラグインを導入すればどんどん高速化する、というわけでは無い
WordPressが高速化する(=素早くページが表示される)ためには、
- ページの容量を小さくする
- データのリクエスト数を減らす
という2つが重要です。しかしながら、導入しているテーマによっては、画像を多く使うもの、動きのあるコンテンツを表示するもの、など制約もあります。
WordPressは本当に便利なシステムで、それぞれのプラグインを導入することで、誰もが高速化を実現することができます。ただし、あれもこれもと導入してしまうと、機能が競合したり、逆に遅くなったりすることもあるかもしれません。
なので、プラグインを導入するときには、必ず、
- バックアップを取る
- テスト環境で試してみる
- 導入するときは1個ずつ
ということを徹底し、自分の環境に合わせた調整をしましょう。
じゃあ結局どれを導入すれば良いの?
僕個人の見解ですが、
- 初心者 → 「 WP Fastest Cache 」
- 中級者 → 「 W3 Total Cache 」
- 上級者 → それぞれのプラグインを選択
といったところでしょうか。
導入方法の紹介で気がついた方もいるかと思いますが、キャッシュ系のプラグインの中で、最も対応範囲が広いのはPHPキャッシュ以外のすべてに対応している「 W3 Total Cache 」です。しかし、その分、設定項目も非常に多いため、それぞれの項目がどの部分を解決してくれるのか、ちゃんと理解しながら設定しないと、思った効果が出ません。なので、ある程度、導入する機能を自分で取捨選択できる中級者にオススメのプラグインになります。
一方で、まだブログを始めたばかり、とか、HTML/CSSとかわかりません、という初心者へは「 リソースキャッシュ 」「 ページキャッシュ 」「 ブラウザキャッシュ 」を非常に簡単に導入できる「 WP Fastest Cache 」のほうが、手軽で確実です。
最後に、「 W3 Total Cache 」がすべてを一括で管理する分、プラグイン自体がちょっと重たいので、上級者であれば一つ一つのキャッシュ機能について、より効果が高いものを探す、というのも1つの手です。
TSUNJI(@sin1983)的まとめ
自分自身がWordPressを高速化したいと思いたち、いろんなブログを見てきましたが、どれが正解なの?ということで迷ってしまいました。テスト環境を用意して、いくつかのプラグインを導入した場合の結果について比較してみたりもしましたが、やっぱり分からないまま。
そこで、まずは原理原則を理解しよう、ということで、WordPressの仕組みと高速化するための方法について整理してみました。
参考:知らないと損する!WordPress高速化の10のルールと14の方法
そこで今回は、高速化の方法の中で、とくにキャッシュ系のプラグインの導入について考察してみた、というわけです。近日中にはプラグイン導入に伴う結果の比較記事もアップ予定ですので、よければよちらもご覧ください。(※本日2月15日時点では、まだ高速化していないので、当ブログをPageSpeed Insightとかで調べてがっかりしないでくださいね…)
以上、TSUNJI(@sin1983)でした!