株式会社ストロボライトのエンジニア開発ブログです。株式会社ストロボライトのエンジニア開発ブログです。nginxでWordPress高速化この広告は、90日以上更新していないブログに表示しています。高速化Tweetどうも、ストロボライトでエンジニアをやっている荒木です。弊社でもエンジニアブログを始める、ということで、初めてのエントリを拝命しました。全ての事業を見ておりネタとしても色々とあるのですが、今回は「LOVEGREEN」にて実施した「nginx+WordPressでサイト高速化」について触れてみようかと思います。「fastcgi_cacheの設定」で、結果は?WordPressのみのチューニングの限界この辺りは昔から色々と誰もが試行錯誤して情報は世の中に沢山溢れていますが、高トラフィックなサイトでのチューニングとなると、WordPress単体でのチューニングには限界が出てきます。そもそも、トラフィックが多いのでサーバーも含めた総合的な高速化を行わないと限界があるということです。WordPressという構成に変更しました(この辺りのお話しは、また別の機会に)で、そこからnginxのキャッシュを使って、そもそもWordPressに処理をさせないようにします。Cache」の導入です。この辺りは、沢山ドキュメントが出ていますので、特に迷うこともないかと思います。「nginx.conf(もしくはvhostのconf)」に必要な設定を追加していきます。Cacheの設定周りだけ記載してみました。そんなに特殊なことはしていません。「fastcgi_cache_pathの設定」ここは基本マニュアル通りに設定します。現状ではinactiveを1日にして、全くアクセスされなかったページは1日で削除されるように設定しています。maz_sizeは10Gにして多めにキャッシュできるようにしています。Onlyにしているのでキャッシュ時のkey(fastcgi_cache_key)に含めるHTTPスキーマも「https」固定にしてあります。「変数定義」この辺りは動的に設定する変数の定義です。$cache_enableという変数を定義して、動的にキャッシュする、しないを切り替えられるようにしています。「リクエストメソッドでのキャッシュON/OFF」ここではGETメソッド以外はキャッシュしないように制御しています。「リクエストURLでのキャッシュON/OFF」キャッシュしたくないページのURLを列挙していきます。WordPressの場合、管理画面のURL、sitemapのURL、WordPressのフォーム画面などのURLになります。特定のCookieを持っている場合、キャッシュしない設定をここで定義します。WordPressの場合だとwordpress_logged_inwp-postpasswordpress_[a-f0-9]+ぐらいですね。コメント機能があるのであれば、comment_authorも入れておけばよいかと思います。「UA判定でキャッシュKeyをPC/SPで分ける」PCとSPでURLが同じ場合、キャッシュのKey(fastcgi_cache_key)を同じにしてしまうと、PCの時にSPの画面が表示されたり、SPの時にPCの画面が表示されたりしてしまいます。レスポンシブサイトであれば問題なさそうですが、LOVEGREENはそうではないので、キャッシュKeyをデバイスごとに判定して、PC/SPそれぞれデバイスにあったキャッシュを作成、保持して上げる必要があるので、このようにUA判定を入れています。「fastcgi_cacheの設定」ここでfastcgi_cacheの設定を定義しています。主な項目について説明していきます。fastcgi_no_cacheキャッシュする、しないを$cache_enableによって設定しています。fastcgi_cache_bypassキャッシュでの応答有無をを$cache_enableによって設定しています。(キャッシュが存在してもWordPressからレスポンスを返却するかどうか)fastcgi_cache_keyここで、実際のキャッシュする際のキャッシュKeyを生成しています。基本、ページURL+デバイスでユニークになるように、プレフィックスで$is_spを設定するようにしています。Insightsで計測すると、キャッシュ導入前、導入後で以下のような結果となりました。3.3sまぁ、元々が遅かったので、キャッシュの恩恵は出ているのかな?と思います。何より、Frontの描画処理でのCPU利用率が下がったので、管理画面側のレスポンスが異常に良くなりました。(これまでは更新に3分待つとか、地獄のような状態だったので)これによって、編集部メンバーから称賛されるという、予期しない効果も出ています。濃い内容ではないですが、これから開発事業部のメンバーが定期的に技術的なエントリ、たまに趣味の話など、色々綴っていきますので、よろしくお願い致します。月別アーカイブはてなブログをはじめよう!strobolight-developersさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。