wp performance optimization
DESCRIPTION
WordPressのパフォーマンス改善についてTRANSCRIPT
WordPressのパフォーマンス改善~ホスティングの状況に応じた改善手法のアレとかコレとか~
WordPress Performance Optimization for Beginners
Komori, Masaaki: WordPress Performance Optimization for Beginners
まず、WordPressの配信の仕組みをおさらいしておきましょう
Webサーバで何が起こっているのか
• MovableTypeなどと異なり、静的なHTMLを配信する仕組みではない
• ブラウザからのリクエストによって、それに応じたテンプレート中のPHPが実行される
• データを格納しているデータベースへ接続• HTMLを生成して、Webブラウザに送り返す
Komori, Masaaki: WordPress Performance Optimization for Beginners
Apache + PHP、MySQLの関係図はこんな感じになっている
その流れを図解してみると…
Komori, Masaaki: WordPress Performance Optimization for Beginners
ホスティングの環境やサイト構築の仕方次第でパフォーマンスが悪くなることも
状況次第で重くなってしまうことも・・・
• チューニングされていないホスティングだったり• ベストエフォート型で回線自体が貧弱だったり• マシンパワーがそもそも非力だったり• プラグインを大量に使ってサイト構築していたり• テンプレート設計で余計なことをしていたり
とまぁ、いろんなことが絡んで重く感じてしまう
Komori, Masaaki: WordPress Performance Optimization for Beginners
オンラインサービスやWebブラウザのプラグインで自サイトの現状を把握する
とりあえず、現状を把握してみよう
• Pagetest(www.webpagetest.org)• Load Impact(loadimpact.com/pageanalyzer)※同時接続数50クライアントまで負荷チェックも可能
• Firebug + YSlow!、Firebug + Page Speed• Safari、Google ChromeのWebインスペクタ
Komori, Masaaki: WordPress Performance Optimization for Beginners
バックエンドのPHPとDBの処理なのか、フロントエンドの構造なのか
ボトルネックがどこなのかを判断する
Komori, Masaaki: WordPress Performance Optimization for Beginners
まずは、自分のホスティング環境がどういう状態か確認
パフォーマンスの改善に入る前に
1. システム管理まで可能なVPSやDelegated Server?
2. Webサーバのモジュールが比較的自由に利用できる?
3. 上の2つのいずれも不可能…
Komori, Masaaki: WordPress Performance Optimization for Beginners
環境にあわせて、できる対応策を適用していく
パフォーマンスを改善するには?
1. システム管理まで可能なVPSやDelegated Serverなら→バックエンドのPHPやSQLの処理速度を改善してみる
2. Webサーバのモジュールが比較的自由に利用できるなら→プラグインで静的なHTMLをキャッシュして配信する(可能ならgzip化)
3. 上の2つのいずれにも当てはまらないなら→head要素内のコンテンツを整理(JS/CSSの結合など)→プラグインによる画像の最適化→その他のパフォーマンス最適化の手法の適用
Komori, Masaaki: WordPress Performance Optimization for Beginners
APCやeAccelerator、xCache、memcacheなどを導入してみる
1. PHPそのものの処理速度をあげる
• 実行されたPHPスクリプトのデータをキャッシュさせる
• 代表的なPHPアクセラレータ→APC(Alternative PHP Cache)→eAccelerator→xCache→memcache などなど※WordPressのキャッシュプラグインとも併用可能
• インストール後、環境にあわせて設定変更
Komori, Masaaki: WordPress Performance Optimization for Beginners
mod_rewrite、mod_expire、mod_gzip(mod_deflate)が使える環境なら
2. Webサーバのモジュールが利用できる
• 「WP Super Cache」や「W3 Total Cache」の導入→mod_rewrite、mod_expire、mod_gzip(mod_deflate)
※キャッシュしたからといってすべての環境で効果があるわけではない。 HTMLの設計次第ではほとんど効果のないこともある
• 可能ならテキストデータをgzipで符号化しておく→mod_gzip(mod_deflate)※上記プラグインでも設定可能。転送データ量が約1/3~1/2に減少
• ついでに画像やJavaScript、CSSなどに有効期限を設定→mod_expire
Komori, Masaaki: WordPress Performance Optimization for Beginners
書き出されるHTMLのhead要素内を最適化したり、テンプレートを改善する
3. ここまでの方法が採れない場合
• 使っているプラグインの数を減らしてみる→場合によっては、それがパフォーマンス低下の原因かも
• HTMLのhead要素内を見直してみよう→JavaScriptやCSSの結合、Minify化、挿入場所の変更→head cleanerプラグインなどの導入の検討
• サイト内で使用する画像を最適化してみよう→WP Smush.itプラグインの導入
• その他の表示パフォーマンスの最適化手法の導入→画像の配信ホストを分割するなど
Komori, Masaaki: WordPress Performance Optimization for Beginners
なんでもかんでもプラグインで解決できるわけではなく…
というわけで、まとめると
• まずは、現状をしっかり把握
• 何でもできるなら、PHPの処理速度を改善してみる
• モジュールが使えるなら、静的なHTMLを配信する
• いずれも無理なら、HTMLの構造変更や画像最適化
できることから始めましょう
Komori, Masaaki: WordPress Performance Optimization for Beginners
作り手の都合だけでなく、見る人に優しいサイト作りを
ありがとうございました