Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Webサイトパフォーマンス最適化の話 SpiceTech #spicetech

Webサイトパフォーマンス最適化の話 SpiceTech #spicetech

SpiceTech #1 講演:40分
https://spice-factory.connpass.com/event/48916/

弊社初勉強会。
Webサイトの表示速度を高速化の基礎部分についてお話させていただきました。
高速化を行わなければならない背景としてUXやSEOの重要性を挙げています。
その他、サイトの速度分析方法や問題箇所の洗い出し、
様々なアプローチでの高速化テクニックをご紹介しています。

以下のような方を対象に発表を行いました。
表示速度を意識したフロントエンドの実装テクニックを知りたい方
・Webサイトの高速化と聞いて何から手を付けたらいいか分からない方
・Webサイト表示速度の計測方法や画面側から改善点を発見する方法が分からない方

泰 昌平@ShoheiTai

January 25, 2017
Tweet

More Decks by 泰 昌平@ShoheiTai

Other Decks in Programming

Transcript

  1. ブラウザがやっていること(超要約) ブラウザ「1行ずつ読んでレンダリングしよう。あ、CSSのURLがある」 ブラウザ「[URL]の内容をリクエストします! text/cssでほしいな!」 サーバ「OK。text/cssで返す わ。gzip形式で圧縮して返す よー」 ブラウザ「gzip圧縮か。解凍処理しないと。。。解凍したら読み込もう。」 ブラウザ「[URL]の内容をリクエストします! text/cssでほしいな!」

    サーバ「OK。text/cssで返す わ。gzip形式で圧縮して返す よー」 ブラウザ「gzip圧縮か。解凍処理しないと。。。解凍したら読み込もう。」 ブラウザ「[URL]の内容をリクエストします! text/jsでほしいな!」 サーバ「OK。text/jsで返す わ。gzip形式で圧縮して返す よー」 ブラウザ「gzip圧縮か。解凍処理しないと。。。解凍したら読み込もう。」 ブラウザ「[URL]の内容をリクエストします! text/jsでほしいな!」 サーバ「OK。text/jsで返す わ。gzip形式で圧縮して返す よー」 ブラウザ「gzip圧縮か。解凍処理しないと。。。解凍したら読み込もう。」 ブラウザ「[URL]の内容をリクエストします! text/jsでほしいな!」 サーバ「OK。text/jsで返す わ。gzip形式で圧縮して返す よー」 ブラウザ「gzip圧縮か。解凍処理しないと。。。解凍したら読み込もう。」
  2. 高速化のアプローチ • サーバサイドの強化 ◦ コストがかかりやすい ◦ 影響範囲が大きいため、対応の難しい場合が多い • キャッシュの利用 ◦

    ファイルキャッシュ、CDNなど対応方法による • フロントエンド最適化 ◦ 比較的コストがかからない ◦ テストがしやすい
  3. Page Speed Insights • 完全無料。 • Googleによる速度計測ツール。 • 評価項目自体は少ないが、簡潔で分かりやすい。 •

    レンダリングブロックを検知してくれる。 • スコアを上げることが難しい。(個人的に…)
  4. ブラウザキャッシュ設定(一例) <IfModule mod_expires.c> ExpiresActive On # 初期値として全てのファイルを1秒間キャッシュする ExpiresDefault "access plus

    1 seconds" # MIME Typeごとの設定 ExpiresByType text/css "access plus 1 weeks" ExpiresByType text/js "access plus 1 weeks" ExpiresByType text/javascript "access plus 1 weeks" ExpiresByType image/gif "access plus 1 weeks" ExpiresByType image/jpeg "access plus 1 weeks" ExpiresByType image/png "access plus 1 weeks" </IfModule>
  5. gzip圧縮 <IfModule mod_expires.c> SetOutputFilter DEFLATE # 古いブラウザは未対応 BrowserMatch ^Mozilla/4\.0[678] no-gzip

    BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html # 圧縮されているファイルを除外 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico|eot|woff|woff2)$ no-gzip dont-vary # 圧縮対象 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/js </IfModule>
  6. レンダリングブロック <!DOCTYPE html> <html> <head> <title>hoge</title> </head> <body> ここにコンテンツが入る。 <!--

    主要コンテンツを読み込んだ後にscriptを読む --> <script src=”hoge.js”></script> </body> </html>
  7. THANKS! Any questions? You can find me at ✘ facebook:

    shouhei.tai ✘ Twtter: @ShoheiTai