WordPressサイトを多少高速化する方法その2

WordPressサイトを多少高速化する方法その1
PHP+SQLのアプリケーションのほとんどに言えることではありますが、WordPressは手軽で便利で大抵のサーバーで使える反面、普通のレン...

前回の続きです
その1でもいくつか高速化に使えるプラグインを紹介しましたので、あと幾つかプラグインを使った高速化について書いていこうと思います。

キャッシュ系プラグインを使う

WordPressはPHPで出来ていますので、URLにアクセスするたびにサーバーがPHPのスクリプトを実行し、記事やサイト情報が入っているDBにクエリを送信し、その結果を受け取ってHTMLを生成してクライアントに送信するというプロセスが発生するわけで、これらがWordPressを重くする最大の原因となるわけですな。
それなら記事の内容がバンバン変わっていくのでなければ、毎回PHPとSQLを実行せずにその結果だけを静的ファイルとして貯めておけば、無駄なプロセスを省いてサーバーが高速に応答できるというわけです。
Nginxのリバースプロキシを使うのがベストではありますが、WordPress専用でもないレンタルサーバーは大抵Apacheですしリバースプロキシもそうそう立てられないです。
とういわけでプラグインでなんとかします。キャッシュ系プラグインはいくつかありますが、無難なところでW3 Total Cacheあたりをおすすめしときます。

Search Engine (SEO) & Performance Optimization (WPO) via caching. Integrated caching: CDN, Page, Minify, Object, Fragment, Database support.

インストールするとダッシュボードにPerformanceという項目がありますので、そこからGeneral Settingsで基本設定ができます。
基本的に有効にするのはPage CacheとDatabase Cacheの2つです。
a634fae1b62ee31c2f023507c522db0b
b12317138bde2d7b83f1c29db9bb85e7
この2箇所にチェックを入れEnableにします。
これでひとまず必要十分のキャッシュ機能が有効になりました。
上部のツールバーにあるPerformanceからEmpty All Cachesをクリックすることで、現在保存されているキャッシュファイルを全てクリアすることができます。
プラグインを追加・削除したりWordPressの設定を変更したりした場合にキャッシュクリアは必要になります。

一応他の機能についてもざっと説明しときます。
Minifyの項目でソースコード中の不要な改行やらスペースやらインデントを削除して軽量化ができます。
結構便利なのですが、環境によってはレイアウトの崩れやスクリプトのエラーが出る場合があるので私の場合は使わないか別のプラグインでやっています。
Object CacheはPHPのオブジェクトの内容や変数をキャッシュしてくれる機能です(多分
テンプレートの内容によっては不具合が起きやすい部分なのと、ページキャッシュとDBキャッシュがあれば十分感あるので私はOFFにしています。
Browser Cacheはそのまんまブラウザキャッシュです。
初回アクセス時にファイルをブラウザに保存させておいて次回はそれを使うようにさせるアレができます。
その他にもgzipを使った圧縮転送の設定もここでできます。
が、どちらもApacheのモジュールが起動していないとできないのと、.htaccessを書き換えてしまうのでその関係で不具合が起きることがあります。
どちらも.htaccessに直接記述する方法を後日書こうと思いますのでここではOFFで。
使う場合はバックアップなどを取った上で使うのがよろしいかと思います。
このサイトはApacheではなくNginxで動いていますのでブラウザキャッシュもgzipもNginxの設定で実装しています、ので私は使ってません。

ちなみにこういったキャッシュ系プラグインはその性質上、頻繁にコメントがついたりユーザーの操作で内容が変わったりするサイトとは相性がよくありません。
また、WP-PostRatingsのようなAjaxを使ったプラグインやMulti Device Switcherのようなコンテンツを切り替えるプラグイン等は正常動作しなくなることも多いです。
本番使用する前に一通り動作を確認した方がよろしいです。

HTML、CSS、JSを最適化する

先ほどのMinifyの機能とも被るのですが、各ファイルの無駄な部分を削除し、更に纏められるものは1ファイルに纏めることで高速化できます。
プラグインやテンプレートによってはCSSやJSファイルをいくつも読み込むことになり、HTTPのリクエスト数が増えてサイトの表示が遅くなってしまいます。
CSSもJSも正常に動作する限り1ファイルにそれぞれまとめた方がいいのでその辺りもプラグインでやります。
ウチで使っているのはAutoptimizeというプラグインです。

Autoptimize は、以下を最適化することでサイトの反応を高速にします。JavaScript、CSS、画像 (遅延読み込みを含む)、HTML、Google フォント、非同期 JavaScript、また邪魔な Emoji の除去など。

これ一つでソースの余分な部分を削除し圧縮、さらにCSSやJSを1ファイルに纏めてくれます。
設定は割とシンプルで、ダッシュボードから設定を開き、HTML、JS、CSSそれぞれの項目から最適化したいものをチェックするだけで基本動きます。
a541f931ed4e26d8412c0b5d02e0e537
このサイトの場合JSはライブラリ系も纏めてしまいかえって重くなってしまったのでチェックを外しています。
これもまたサイトによってはCSSやJSが悪さをすることがありますので動作確認は必須です。

その他似たような最適化プラグイン

同じようなCSSやJSの配信最適化用で、ウチでは使っていないもののサイトによっては有効そうなプラグインは他にもありますので紹介しときます。

Head Cleaner

WordPress のヘッダーとフッターのタグをクリーンアップします。
同様のCSSやJSの配信最適化プラグインですが、非常に多機能です。
ヘッダーにあるCSS、JSファイルのリンクをフッター部に移動させたりできるので表示の高速化にはかなり有効と思います。
ただこのサイトでは他のプラグインと干渉したらしくスタイルが崩れる現象が起きたので今は使っていません。
割と詳細な設定項目がありますのでそこを見なおせば干渉を防げると思いますがめんどくさいので……
詳しい使い方や設定方法はバズ部さんなどで紹介されてました。

Head Cleaner は、WordPressのそれぞれのページを構成するソースを最適化して、サイト表示速度の向上に寄与してくれるプラグインだ。 特に、サイトのソースの中でも容量の大きい以下の2つをコンパクトにしてくれる。 CSS:デザイ

WP deferred javaScript

Defer the loading of all JavaScripts added with wp_enqueue_script(), using LABJS (an asynchronous javascript library).
リンクされているJSファイルを非同期に読み込みレンダリングブロックを防ぐことで表示を高速化します。
こっちは設定が一切ないくらいシンプルで、インストールして有効化するだけで動きます。
簡単かつ結構有効なのですが、やはり他のプラグインやスクリプトの不具合を起こす場合があります。
うちの場合LazyLoad系が特にダメでしたので現状オフです。

思ったより長くなってしまったので続きはその3で後日また。
プラグイン周りのことを主に書いたので、被る部分も出てきますが.htaccess周りでできる設定について少しだけ書こうかなと。

スポンサーリンク