ウェブアプリケーション高速化
#vue #vuetify #webpack #Webページ高速化
ウェブアプリケーションを高速化したい
表示、処理速度は早ければ早いほど嬉しい
vue 関連が多いが、様々なものに応用できるはず
測定 計測 レポート作成
高速化のために、まずは何がネックになっているのかを測定する
ビルド時に生成されるjs css等のレポートを作成する
Bundleの統計レポートを出力する Vue.js webpack
Webサイトのページ表示速度測定&改善案提案サービス
Webサイトのページ表示速度測定サービス
PageSpeed Insights
PageSpeed Insightの診断を参考に少しずつ修正していくと良い
施策一覧
Vue / webpack Bundle
Vueとwebpackで学ぶCode Splitting
Vue build --modern でBundleサイズを減らす
画像
Sprite画像を使用してページ表示を高速化
Sprite画像を使用してページ表示を高速化 レスポンシブ対応
webP 次世代画像フォーマット
画像圧縮でサイズ削減
Squoosh
Vuetify/Icon
vuefity 必要なコンポーネントだけを importする
Purge CSS
Vue SVGアイコンを使う
Vuetify Iconを@mdi/jsにして必要なアイコンのみをimportする
Cache
Cache
Jsonデータの持ち方を工夫して高速化
データを配列(Array)で持つか、objectで持つか
遅延読み込み
Vue / webpack Bundle
Vue / webpack Bundle
適切なサイズのBundleに分割し、ページの表示に必要になったら必要な分だけのBundleを取得する
Vueとwebpackで学ぶCode Splitting
モダンなブラウザ用のBundleを作成する。ビルドされるコードは古いブラウザに対応してくても良い(モダンなコードで書ける)ためコード量が減る
build --modern でBundleサイズを減らす
画像
画像
Sprite画像を使用してページ表示を高速化
Sprite画像を使用してページ表示を高速化 レスポンシブ対応
webP 次世代画像フォーマット
画像圧縮でサイズ削減
Squoosh
Spriteイメージ
Factorio Calculatorのソースを見ていたら複数の画像を1つの画像ファイルにまとめていた。Spriteと言うらしい
50枚画像があるとHTTPリクエストを50回繰り返さなければならない
オーバーヘッドが発生する
50枚の画像を1枚にまとめた画像ファイルがあればHTTPリクエストは1度で済む
webpack-spritesmith - npmを用いてSprite画像を生成するようにした
Sprite画像を使用してページ表示を高速化
Sprite画像を使用してページ表示を高速化 レスポンシブ対応
webp
jpgやpng等の画像フォーマットの1つとしてwebPがある。
webP 次世代画像フォーマット
Vuetify/Icon
Vuetify/Icon
vuefity 必要なコンポーネントだけを importする
Purge CSS
Vue SVGアイコンを使う
Vuetify Iconを@mdi/jsにして必要なアイコンのみをimportする
Vuetify(CSSフレームワーク)
CSSフレームワークを使う場合は不必要なコンポーネントはimportしないようにする
vuefity 必要なコンポーネントだけを importする
CSSフレームワーク付属のCSSの中で使用していないCSSを取り除く
Purge CSS
vuetify付属のアイコンセットが重すぎる
アイコンセットは使わずに、必要な分だけアイコンのコンポーネントを作る
Vue SVGアイコンを使う
Vuetifyは必要な分だけのimportに対応していた
Vuetify Iconを@mdi/jsにして必要なアイコンのみをimportする
アイコンを選んでBundleするみたいなサービスも使える
#後で書く
フォント
webフォントは font-display のswapを使うと、fontのロードを待たずに初期表示を行う
Web制作者が知っておきたい、Webフォントを快適に表示するCSSの新しいプロパティ「font-display」 | コリス
CSS
使用していないCSSを自動で取り除く
Purge CSS
参考
Nuxt.jsのbundleサイズを55%削減したwebpack周りの小技 - Qiita
Vue.jsアプリパーフォーマンス最適化: パート1 – パフォーマンス最適化のイントロとlazy loading - Qiita