CSSサイズバジェットとクリティカルCSS戦略

クリティカルCSS抽出、未使用CSS削除、メディアクエリ分割を含むCSSパフォーマンスバジェットを定義。レンダーブロッキングスタイルシートの削減戦略でCSSサイズをバジェットに対して追跡。

Asset Budgets

詳細な説明

CSSパフォーマンスバジェット

CSSはデフォルトでレンダーブロッキングです — ブラウザはドキュメントheadのすべてのCSSをダウンロードしてパースするまで何も描画できません。これにより、CSSバジェット管理はFirst Contentful Paint(FCP)とLCPに直接関連します。

CSS バジェット推奨

サイトタイプ CSSバジェット クリティカルCSS
ブログ/コンテンツ 30-50 KB < 14 KB
ランディングページ 40-60 KB < 14 KB
Eコマース 60-100 KB < 14 KB
SPA 50-80 KB < 14 KB
ダッシュボード 80-150 KB < 14 KB

14 KBのクリティカルCSS制限は、TCP初期輻輳ウィンドウに由来します — 最初のラウンドトリップで約14 KBのデータを配信できます。

最適化戦略

  • クリティカルCSS — ファーストビューのCSSを<style>タグにインライン化(< 14 KB)
  • 非同期読み込み — 非クリティカルCSSをmedia="print" + onloadで読み込み
  • 未使用CSS削除 — PurgeCSSなどで未使用ルールを除去
  • CSS-in-JSバジェット管理 — styled-components、Emotionで生成されるランタイムCSSを追跡
  • ユーティリティフレームワーク最適化 — パージ設定済みのTailwind CSS

メディアクエリ分割

メディアクエリでCSSを分割して条件付き読み込み:

<link rel="stylesheet" href="base.css">
<link rel="stylesheet" href="desktop.css" media="(min-width: 768px)">
<link rel="stylesheet" href="print.css" media="print">

モバイルではbase.cssのみがレンダリングをブロックします。

ユースケース

CSSバジェット追跡は、CSSフレームワークやデザインシステムを使用するサイトに特に重要です。適切なパージなしのTailwind CSSプロジェクトは3+ MBのCSSを出荷する可能性があります。リソース追加時にCSSサイズを追跡することで、チームは肥大化を早期にキャッチしFCPの高速化を維持します。

試してみる — Performance Budget Tracker

フルツールを開く