2018年12月27日(木)
2018年9月29日に都内で開催したCSS Nite LP58「Coder’s High 2018」のフォローアップとして、阿部 正幸さん(モチヤ)の『Webサイト表示速度改善手法』セッションのスライドなどを公開します。
阿部 正幸さん (Mochiya)を講師にBootstrapの基礎と、実際にプロとして使うためのノウハウをセミハンズオン形式で学びます。
CSS Nite LP58 Coder's highに参加いただきました、皆さまありがとうございました。
Webサイトの高速化に登壇させていただきました、モチヤの阿部と申します。
セッションでは若干緊張しており、伝えもれてしまったことがありますので、こちらでフォローアップさせていただきます。
今回のセッションで一番お伝えしたかったことは、Webの高速化を行うには、なぜ遅いかを知るための原因調査がもっとも重要です。
原因を調査し高速化の対策を実施します。
まずはバックエンドに原因があるのか、フロントエンドに原因があるのかの大雑把な調査を行うためには、速度調査ツールを使うと良いでしょう。
今回私のセッションでは主にバックエンドの施策の話をさせていただきました。
バックエンドで重要になるのが、キャッシュと、データベースの効率化で、下記の対策があります。
「サーバー引っ越し(スペックアップ)、サーバー内部キャッシュを入れる、データベース設計見直し、キャッシュを入れる」 は、インフラエンジニアが必要ですので、今回のセッションは説明を除外させていただきました。
データベースのレーコード数が多い場合、データベースインデックスを作成することにより高速になることが多くあります。
インデックスの確認や作成は、レンタルサーバーでも利用ができる、phpMyAdminからでできます。
インデックス作成時の注意点
セミナー中は、気軽にインデックスの作成をしてみようと捉えてられてしまような発言をしてしまいましたが、インデックスの作成はメリットもありますが、デメリットも存在ます。
インデックス作成の目安は、スロークエリ(Slow query)を使って、遅いSQLの箇所を特定し、そのSQLのWHERE(検索条件)に対して行うのが有効です。
多くのシステムは適切なインデックスが作成されており、検索を高速に行っています。
またSQLの書き方によっては、インデックスを作成しただけでは早くならないケースも存在ます。原因がSQLにあると分かった時点で、一度エンジニア相談してみると良いでしょう。
上記でインデックス作成は必ず検証をしてくださいとお伝えしたのは、デメリットも存在するからです。
デメリットは下記の通りです。
様々な施策を行ったあとは負荷をかけて、速度検証を行うことが重要です。
Apache benchはWebサーバーの性能をしらべることができます。
Macの場合はターミナル画面を起動し下記のコマンドを実施してください。
ab -n 250 -c 50 http://example.com/
LOAD IMPACTは、1日5回までの検証が無料で行うことができます。
昨今のホスティングはデフォルトでgzip圧縮配信されています。もしサーバーが対応していない場合は使えませんので、ウェブサーバーの引っ越しを検討してください。
ブラウザキャッシュについては、ウェブサーバー側でデフォルトの設定がよく入っていますので、ChromeのDevToolsから確認をしてみてください。
(確認方法スライドに追加いたしました)
入っていない場合は、.htacessに下記を追記することで、追加できます。
<Files ~ ".(gif|jpe?g|png|ico|svg)$">Header set Cache-Control "max-age=1209600, public"</Files>
キャッシュのクリア方法は、キャッシュの設計と同じくらい重要です。
理由は、キャッシュのクリアタイミングが適切でないと、お客様から「記事更新したんだけど反映されない」と必ずクレームに繋がります。
ですので、記事が更新されたら、同時にキャッシュがクリアされるようにシステムを設計する必要があります。
例えばWordPressと、CDNを導入している場合は、WordPressの記事が更新されたことをフックにCDNのキャッシュをクリアするAPIをたたいて削除します。
DBの内部キャッシュを使っている場合も同様に、記事が更新されたら、DB内のキャッシュをクリアするようにプログラミングしておきます。
Lazy Loadは、コンテツサイズが大きいものに関して使うと有効です。
例えば動画をトップに表示したい場合、実案件で下記のような要件がありました。
デメリットとしては、PCの場合は別途で通信が発生してしまいます。しかし昨今のサーバー環境はHTTP2や、画像圧縮での配信など、ものすごく画像数が多くない限り問題になることは少ないです。
遅延読み込みがSEOで非推奨な理由は、Googleは遅延読み込みをした画像を検索用インデックスに登録できないからです。
その画像がSEOに必要ない場合は、遅延読み込みをしても問題ないですし、表示速度を落としてまで、画像を沢山読み込みたいということも無いでしょうから、適切に導入しても良いのではないでしょうか。
イベントに参加いただきました皆さまありがとうございました、また皆さまにお会いできることを楽しみにしております。
下記は私のソーシャルアカウントです、お気軽にフォローいただけると幸いです。
2019年、CSS Niteでは49回の関連イベントを通して123セッションが行われました。その中からベスト・セッション+αを選びました。