としっぴーず

旅行やミュージカル、Wordpress等のITネタ中心のブログ

wordpressでサーバーの応答時間を改善する

      2016/08/30

GoogleのPageSpeed Insightsを確認したらサーバーの応答時間が4.3秒という驚きの遅さだったので改善を試みます。

pagespeedinsights20160110

目標は200ミリ秒以内

Google Developersによるとサーバー応答時間は200ミリ秒以内にする必要があるとのこと。あと4.1秒短縮するのか。。高いハードルです。

以下、Google Developersより引用

このルールは、サーバーの応答時間が 200 ミリ秒以上であることを PageSpeed Insights が検出した場合にトリガーされます。

 

まずは応答時間を確認

chromeのデベロッパーツールで応答時間を確認します。chromeで該当ページを表示して、画面右上のメニューから「その他のツール」→「デベロッパーツール」をクリック。

chrometool

ツール上部の「Network」を選択してページをリロードします。グラフの一番上がサーバー応答時間です。4.9秒。遅すぎやろ。。。

現在の構成

現在の構成は

  • DTIのVPS(月額500円程度の最小構成)
  • Apache 2.2.15
  • MySQL 5.1
  • PHP 5.6
  • MySQL 5.1

です。

Nginx導入

サーバー応答時間を早くする方法として、キャッシュ系のプラグインやPHPアクセラレーターの導入などが真っ先に思いつきますが、そもそもの構成から見直してみることにしました。サーバーのスペックを見直すとお金もかかるので、まずはwebサーバーから変更することにします。Apache2.2から軽量と評判のNginxに変えてみます。

Nginxでwordpressを動かす手順はこちら

この状態で、2.1秒。お、早くなった。

PHPアクセラレーターの導入

wordpressはphpです。しばらくphp使ってませんが、高速化と聞いて思いつくのがAPCなどPHPアクセラレーターです。調べたらphp5.5からはZendOPcache/APCuに置き換わっているそうです。

OPCache

確認したら既に動いているようでした。

opcache.enable => On => On

推奨の設定に変更します。

nginxを再起動

APCu

yumでインストールします。

Nginxを再起動して終了。

プラグイン

APCuはユーザーキャッシュの機能ですので、そのままでは動作しません。ユーザーキャッシュを利用するプラグインを導入します。

APCu Object Cache Backend

このプラグインは、wordpressの管理コンソールから有効化できないので、以下のようにします。

これで3.8秒。お、遅くなった。。。却下。元に戻そう。

 

Nginxでキャッシュする

NginxとFasetCGIでページキャッシュができます。キャッシュ系の機能はwordpressのプラグインでもたくさんありますが、Webサーバでキャッシュした方が早いのでこちらを使ってみます。ちょっとググってみたらWP Super CacheとNginxのキャッシュを併用する例がいくつか出てきたのですが、今回速くしたいのはトップやアーカイブなどの投稿一覧のページなので、WP Super Cacheを利用する意味はあまりありません。なのでNginxとFastCGIキャッシュだけで対応します。

設定方法はこちらの記事をご確認ください。

結果は、キャッシュが効いた状態で0.06秒に短縮。まー当然ながら早くなりました。

合格。終了!!!

goukaku

参考サイト

 

 - Nginx, WordPress