さくらクラブ主催のWebパフォーマンス改善セミナーで発表した内容です。WordPressはどれだけレンサバの設定で高速化できるのか、PHPバージョンアップ、キャッシュプラグインの効果、CDN利用のおすすめなど。 https://sakura.doorkeeper.jp/events/90474
レンタルサーバの設定でできるWebサイトの高速化さくらインターネット株式会社 技術本部 谷口元紀
View Slide
レンタルサーバで「チューニング」による高速化は可能なのか?
(設定値とかをいじると言う意味では)無理です
なぜ無理なのか?管理者権限がない(から色々できない)スペックなどをいじることができない共用サーバなので機能が制限されている4
では高速化するにはどうすれば?
とその前に
高速化のためにはボトルネックの把握が必要
Webサイトの表示速度ボトルネックPageSpeed Insightsで分析してみる実は超巨大画像が使われている場合など、サーバ側ではどうしようもない部分が大多数。ではサーバ側のボトルネックとは?8
Webサイトが表示されるまでの流れを知っておきましょう
ウェブサイト表示時の流れを分解すると10ページが見え始めるのにこれぐらいかかるDNSルックアップTLSハンドシェイクTTFB ファイルダウンロード
ウェブサイト表示時の流れを分解すると11実際の流れはこんな感じになります。※DNS Lookup〜SSLまでは2回目以降キャッシュされます。
DNSルックアップとはドメイン(example.comなど)の名前を解決するためにかかる時間DNSリソースレコードのTTLを短縮しすぎなければOK12
TTLとは?これ13
TLSハンドシェイクとはhttpsサイトが暗号化通信を開始するためのご挨拶的なもの基本的に短縮する手段は無し失効管理のサーバが国内にある証明書を選ぶぐらい14
TTFBとはTime To First Byteの略サーバがページのHTMLを送ってくるまでの時間サーバの性能やページの重さによって大きく変わる15
これがTTFB16ページのHTMLの帯みたいなやつをクリック
ページ表示速度はTTFBではなくTime to First Meaningful Paint(意味のあるコンテンツの初回ペイント)と言われますが、TTFBはそこに含まれるのでとても重要。
そして
TTFB以外の部分はサーバ設定ではいかんともしがたい
TTFBへ影響のあるもの TTFBはサーバパフォーマンスの影響を多分に受ける。 PHPのバージョンでも違う。 重いCMSを利用していると特に影響大。 静的HTMLを配信するCMS等は影響小。20
高速化のために特にやりたいこと
1.PHPのバージョンアップ
PHPのバージョン変更方法ポチるだけもっかいポチったら元に戻る
簡単!
PHPのバージョン変更方法PHP7系を選択して保存するだけ
PHPのバージョン変更方法レンタルサーバ各社、概ね変更可能ドメインによって選べるところもアリ2~3倍の高速化メリット(5系→7系の場合)
PHPのバージョン変更方法→デメリット上位バージョンのPHPへ対応する必要あり検証や仕様変更の手間
ポイント現段階でPHP5系のみ対応のプラグインやテーマなどは開発が停止していることが多セキュリティ的にも望ましくないので早急に利用停止を検討するさくらのレンタルサーバならステージング環境で楽ちん検証が可能
2.WordPressプラグインの精査
多機能プラグインを入れるだけで…30921ms→1680msとスピードダウン・さくらのレンタルサーバ・WordPress・PHP7.2モジュールモード・アクセス解析などができるプラグインをインストール
試しにPHP5.6(CGIモード)に落としてみると1680ms→4670ms4倍程度遅い・さくらのレンタルサーバ・WordPress・PHP5.6CGIモード・アクセス解析などができるプラグインをインストール
なぜプラグインを入れると重くなるのか?
みなさんの周りにいませんか?「余計なアプリを入れすぎるとPCが重くなるよ!」おじさん
PCが重くなるおじさんの発生要因以前のPCはCPUやメモリリソースが少ない余計なプロセスが動いてるとPCが重くなる極限までアプリケーションを切り詰めるモチベーションになる
PCが重くなるおじさんの発生要因昨今のPCは余裕があるので気にしなくてよくなった!レンタルサーバはどうなのか?
PCと同様に使いようによっては重くなる
なぜレンサバも重くなるのか安価にサーバサービスを提供できるようにリソースを共有している一人あたりのリソースは少なくなるもちろん、以前よりは性能は上がっています!
というわけで
プラグインの悪影響 基本的にWordPressはデータベースからデータを引っ張ってきて何かを表示する もしくは何かしらの設定値(DBにある)に基づいて動的な処理をする 関連投稿とか、アクセス解析とか、ショートコードとか つまり、データベースへのアクセスが大量に発生する39
プラグインの悪影響② 特定ページだけならまだいいけど… 全部のページで効果/影響のあるプラグインを入れると 全部のページを開くときにDBリクエストが大量に発生する ページのHTML生成に時間がかかる40
プラグインだけじゃない!
3.テーマの負荷見直し
例えば…ヘッダーロゴをテーマに登録しているヘッダーを読み込むたびにDBにロゴのパスを聞きに行くDBアクセスが輻輳して重くなる43
プラグインとかパスとか精査とかめんどいんですが。。
よし、ハードコーディングしよう!
ハードコーディングとは例)テーマファイルに直接ヘッダロゴのパスを書く!管理面倒じゃない?→はい。WordPressの良さを殺します。46
ハードコーディングはやめよう!
4.ならキャッシュを使いましょう!
PHP&MySQLのページ表示までの処理ページが表示されるまでの処理の流れ49※あくまでざっくりの説明です。HTTPリクエスト PHP処理データベース処理PHP処理 HTML出力サービスサーバ処理 DBサーバ処理サービスサーバ処理ネットワークネットワーク
何かしらキャッシュを使った場合ページが表示されるまでの処理の流れ50HTTPリクエスト キャッシュ処理 HTML出力サービスサーバ処理※あくまでざっくりの説明です。
キャッシュの種類 OPCache APCu オブジェクトキャッシュ ページキャッシュ ブラウザキャッシュ CDN(Content Delivery Network) 詳しくは51キャッシュの種類 さくらのナレッジ 検索
キャッシュプラグインを使うだけで…521680ms→133ms格段にスピードアップ!・さくらのレンタルサーバ・WordPress・PHP7.2モジュールモード・アクセス解析などができるプラグインをインストール・WP Super Cache使用
キャッシュだって所詮レンサバのスペック次第でしょ?
ではCDNを使ってみましょう!
CDNを経由すると…55さらにスピードアップ!・さくらのレンタルサーバ・WordPress・PHP7.2モジュールモード・アクセス解析などができるプラグインをインストール・さくらインターネットのCDNウェブアクセラレータを使用
同じサイトのデータでも環境/設定によってこれだけTTFBが変わります。
CDNのメリット レンサバの引っ越しがいらない 使いたいときだけ使える 帯域上限が無い(もちろん限界はあり) ハイスペックサーバに乗り換えるより安い(こともある)57
CDNのデメリット 設定がややこしい(慣れれば一発) キャッシュ事故のリスク 従量課金青天井58
処理能力が高いサーバを選ぶと言う選択肢もありますが…
速いサーバを選ぶには? 使って色々試してみないとわからない。お試し期間でTTFBを見てみるのが有効。時間帯も変えると◎ ボトルネックは人それぞれ。同じサイトコンテンツで試すのが非常に重要。自分のサイトをコピーして(ドメインは違うのでOK)試す。60
一概にここが速い!とは言えないコンテンツによって異なる
恒常的にアクセスが多くなければCDNの方がお得になることも
CDNってお高いんでしょ?
CDNの価格 さくらのCDN ウェブアクセラレータでは1GiB5円(税込) GB→GiB計算を含み、GB×0.93×5で月間費用が見積りできます。64
寺社仏閣(初詣)、祭り・イベント、学校(合格発表)等の需要が不定期なサイトは
高負荷に備えて高いサーバを借りるより需要期にCDNを使う方が安い!CDN さくらのナレッジ 検索
帰ったら試してみましょう! Chrome Dev Tool でTTFBの確認 使っているPHPバージョンの確認 使ってないプラグインなどの精査 キャッシュプラグインの導入検討(キャッシュのデメリットに注意する) ここぞと言うときのためにCDNを検討67
ご質問ありましたら… お気軽に さくらインターネットでの担当:サービス企画レンタルサーバ/SSL証明書/ドメイン/CDN
ご清聴ありがとうございました。