補足施策 | 項目 | 状態 | |------|------| | WebP最適化(必須) | 適用済み(残存PNG20件をロスレス変換、Content-Type是正14件) | | JS最適化 第1段階(必須) | 適用済み(構造的に達成済みであることを実測で確定) | | JS最適化 第2段階(必須) | 適用済み(9本中 async 化できるのは /bundles/site 1本のみと確定) | | CSS結合(必須) | FCPフェーズ 73eb036 で実施済み(外部CSSは1本のみ) | | HTMLファイルサイズ | 適用済み(-24.9% / -49,747B) | | 不要なHTML要素 | 適用済み(全ブレークポイント非表示のミニカート、DOM -24要素) | | スライダー・リスト数の制限 | 適用済み(ブログリスト、DOM -191要素) | | 初期非表示要素の遅延読み込み | 適用済み(セールカルーセル、DOM -796要素) | | TTFB | 対処不可能(オリジンサーバ改修が必要。影響度を測定) | | ネットワーク速度シミュレーション | 実施(不採用・計測専用) | | CSSのパージ | 対処試行・不採用(単一ページのカバレッジでは安全に削減できないと実証) | | Google Fonts をやめる | 適用済み(転送量 -30KiB、リクエスト -2件) | | Webフォント(日本語)をやめる | 該当なし(日本語Webフォントは0件) | | 未使用JS / レガシーpolyfill | 対処試行・不採用(理論上限測定で効果なしと実証) | observedFirstContentfulPaint: 1,134ms observedDomContentLoaded: 1,139ms observedLargestContentfulPaint: 1,134ms observedSpeedIndex: 1,153ms observedLoad: 3,807ms CLS: 0.000 TBT: 0ms Overall Score: 100 dom-size: 1,544要素 / リクエスト 241件 / 転送量 2.99MB / 展開後 4.12MB / 404は2件 ※ シミュレーションの LCP / SI は Lantern の内部計算が破綻しているため成果指標に使用しない | 指標 | オリジナル | 最終 | 改善率 | |---|---|---|---| | observedLargestContentfulPaint | 4,001ms | 1,134ms | -71.7% | | observedDomContentLoaded | 3,911ms | 1,139ms | -70.9% | | observedSpeedIndex | 3,259ms | 1,153ms | -64.6% | | observedLoad | 10,410ms | 3,807ms | -63.4% | | リクエスト数 | 444件 | 241件 | -45.7% | | 転送量 | 8.77MB | 2.99MB | -65.9% | | 展開後サイズ | 26.13MB | 4.12MB | -84.2% | | dom-size | 2,635要素 | 1,544要素 | -41.4% | | CLS | 0.005 | 0.000 | 完全解消 | | Overall Score | 66 | 100 | +34pt | - IntersectionObserver の監視対象に display:none の要素を使うと 「表示されたら初期化する」が「初期化されるまで表示判定されない」循環デッドロックになる - pixel diff によるレグレッションテストでは、ビューポート外の機能破損を検出できない - 実行時カバレッジによるCSS削減は、単一ページの計測では原理的に安全に行えない - 「未使用バイト数が大きい」ことは「削れば速くなる」を意味しない (seiko バンドルを完全ゼロ化しても observedLCP の改善は -8ms のみ) - server-response-time(TTFB 970ms): オリジンサーバ改修が必要 - bf-cache: unloadハンドラ / cache-control:no-store、アプリケーション実装側