SPAの
速度改善について
PUX / sogo ohta
SPAの
表示速度改善について
SPAの
ファーストビューを
如何に速く表示するか
SPAでありがちなこと
SPAでありがちなこと
JS/CSSファイルが肥大化する
SPAでありがちなこと
JS/CSSファイルが肥大化する
↓
ダウンロード時間が長い
SPAでありがちなこと
JS/CSSファイルが肥大化する
↓
ダウンロード時間が長い
レンダリングブロックが長い
↓
SPAでありがちなこと
JS/CSSファイルが肥大化する
↓
ダウンロード時間が長い
レンダリングブロックが長い
↓
ファーストビューの表示が遅い
↓
理想
ファーストビューを表示するときには
ファーストビューに必要な
最小限のHTML/CSS/JSだけを
ロードする
残りのリソースは必要なときに必要な分
をロードする
現実に立ち向かう
-
画像最適化
-
ファーストビューCSSのインライン化
-
ファーストビュー以外のCSSファイルを非同期ロード
-
CSS/JSファイルのlong term caching
画像最適化
OptiPNGで画像サイズを小さくした
ファーストビューCSSの
インライン化
外部CSSファイルのダウンロードと処理が完了するまで
レンダリングはブロックされる
<link rel="stylesheet" href="/public/css/sp.css?version=-v20170829130621">
ファーストビューCSSの
インライン化
HTMLに直接styleタグを埋め込んで
レンダリングブロックを回避
ファーストビュー以外のCSSを
非同期ロード
同期(レンダリングブロックする)
Text
<link rel="preload" as="style" href="style.css" onload="this.rel='stylesheet'">
<link rel="stylesheet" href="style.css">
非同期(レンダリングブロックしない)
ファーストビュー以外のCSSを
非同期ロード
Text
iOS Safari...
ログイン画面以外のCSSを
非同期ロードする
Text
preloadのJavaScript polyfill
CSS/JSファイルの
long term caching
Text
ビルドごとに出力するJS/CSSをファイルの名前を一意にして
強いブラウザキャッシュを指定することで2度と通信させない
CSS/JSファイルの
long term caching
Text
ファイル名にハッシュ値を埋め込むか
or
クエリストリングに一意値を指定するか
で一意性を実現する
CSS/JSファイルの
long term caching
Text
それ、Webpackでできるよ!
もっと速くなれる
もっと速くなれる
- Service Worker
- HTTP/2
iOS SafariでService Worker
が動くようになる気配
んなこたーない
でもService WorkerやHTTP/2でWebはもっと速くなる・・・
成長し続けるWebに
ご期待下さい!!
SPAの速度改善について
By Sogo Ohta
SPAの速度改善について
- 311