TBTを改善
| # | コミット | プラクティス | TBTへの効果 |
|---|----------|-------------|-------------|
| 1 | 951467f | カート合計取得の同期XHRを非同期化 | 497ms → 0ms(全量を解消。Overall 87 → 100) |
| 2 | b8be5e6 | 検索パネルの同期Ajax 3箇所を非同期化 | 効果なし(INP・操作応答性では改善) |
| 3 | (実施せず) | 残存ロングタスクのsetTimeout分割 | 該当なし(P1後のトレース実測で50ms超0本) |
| 4 | 4ea6f9c | jquery-ui.min.js を autocomplete 系に絞る | 効果なし(unused-javascript 0.5→1.0) |
| 5 | 70b9333 | 全スクリプト要素をbody末尾へ出現順のまま移動 | 効果なし(FCP -28ms / SI -38ms の改善方向) |
TBT 497ms の全量がただ1本のロングタスク(547.3ms)に起因していた。
RunTask 547.3ms
TimerFire 547.2ms(jQuery ready ディスパッチ)
FunctionCall 547.2ms jquery-3.4.1.min.js
URLLoader::loadSynchronously 545.4ms ← 同期XHR
imageCart-smt.js の $.ajax({ async: false }) による POST doGetBasketTotal(TTFB 540ms)。
TBTはロングタスクの50ms超過分の総和であるため 547 - 50 = 497 となり、Lighthouseの実測値と誤差ゼロで一致した。
| 項目 | 状態 |
|------|------|
| ロングタスク(50ms以上の処理) | 適用済み(P1で解消。TBT 497ms→0ms) |
| スライダーの複数初期化 | 効果なし(実測14.7ms / 12.2ms で50ms未満、TBT寄与0ms) |
| DOMContentLoadedハンドラ内の重い処理 | 適用済み(実体はP1対象の同期XHR) |
| jQueryの.each()による大量DOM操作 | 効果なし(対象要素が1桁、ロード時TBT寄与0ms) |
| XMLHttpRequestによる同期通信 | 適用済み(該当4件すべて対処。P1で1件、P2で3件) |
| jQueryの.load()による同期通信 | 該当なし(検索結果0件) |
| 遅延読み込みライブラリ自体の負荷 | 該当なし(lazysizes等・loading="lazy" ともに0件) |
| unused-javascript の解消(チェックリスト外) | 適用済み(score 0.5→1.0、パース/評価 -79%) |
| スクリプトのbody末尾移動(チェックリスト外) | 適用済み(TBTへの効果なし) |
| async属性の付与 | 該当なし(15本すべてが被依存または即時DOM取得) |
| 監査 | 開始時 | 完了時 |
|------|--------|--------|
| total-blocking-time | 500ms(score 0.58) | 0ms(score 1) |
| long-tasks items | 1件(547ms) | 0件 |
| max-potential-fid | 550ms(score 0.06) | 20ms(score 1) |
| bootup-time | 0.6s | 0.0s(score 1) |
| mainthread-work-breakdown | 0.8s | 0.3s(score 1) |
| unused-javascript | score 0.5(60 KiB) | score 1(0件) |
| メインスレッド最長タスク | 547.3ms | 26.1ms(50ms超0本) |
TBT改善フェーズで扱えるJavaScript関連監査は、すべて満点に到達した。
LCP: 368ms
CLS: 0.000
TBT: 0ms
FCP: 339ms
SI: 637ms
Overall Score: 100