TBTを改善

| 項目 | 状態 |
|------|------|
| ロングタスク(50ms以上の処理) | 適用済み(2879b5a / 9745955。long-tasks 検出 1件 → 0件) |
| 同期XHR(XMLHttpRequest) | 適用済み(2879b5a: top_sb.js の jQuery.ajax async:false → true。TBT 40ms の全量がこれに由来) |
| jQueryの.each()による大量のDOM操作 | 適用済み(9745955: lazybeforeunveil の .tile() をデバウンス) |
| 遅延読み込みライブラリ自体の負荷 | 一部適用済み(aeeeff1 / 9745955)。lazysizes の重複除去は Diff 12.3206% で解決困難のため現状維持 |
| スライダー(Swiper等)の複数初期化 | 適用済み・効果なし(51be0f0: 実測でロングタスク閾値未満のため指標に算入されず) |
| DOMContentLoadedハンドラ内の重い処理 | 該当なし(第一者ハンドラ1件のみ、MutationObserver 登録のみ。トレース実測 8回 計0.1ms) |
| jQueryの.load()による同期通信 | 該当なし(7箇所を調査。ページロード時実行の2箇所はレスポンス実体に script 要素0件のため同期化しない) |

| コミット | プラクティス | TBT | Score |
|---|---|---|---|
| 2879b5a | 同期XHR(トレンドキーワード取得)の非同期化 | 0ms | 100 |
| aeeeff1 | 重複読み込みスクリプトの除去(3件) | 0ms | 100 |
| a39b7d0 | 未使用 vue.min.js の除去 | 0ms | 100 |
| 9745955 | lazybeforeunveil ハンドラのデバウンスによるレイアウトスラッシングの解消 | 0ms | 100 |
| 51be0f0 | window.load 内の連続処理の分割(効果なし) | 0ms | 100 |

全5プラクティス採用、不採用0件。フォーカス指標 TBT が悪化したプラクティスは0件。

1. TBT 40ms の全量が単一の同期AJAX(top_sb~250821.js:149 の async: false)に由来することを trace 解析で特定し、1行の変更で 0ms を達成
2. .tile() のレイアウトスラッシング解消(9745955): lazybeforeunveil の EventDispatch 153.5ms → 28.8ms、Layout 504回115.5ms → 156回62.0ms、UpdateLayoutTree 512回59.6ms → 163回39.3ms、Style & Layout 174.1ms → 100.7ms、lazysizes の bootup-time 204.1ms → 116.6ms。Lighthouse 指標には現れない(TTI以降のため)が実機の体感に影響する明確な弱点
3. unused-javascript 179 KiB → 90 KiB(重複 swiper -43KiB、未使用 vue -46KiB)

LCP: 734ms
CLS: 0.000
TBT: 0ms
FCP: 532ms
SI: 2369ms
Overall Score: 100

TBT 40ms → 0ms、long-tasks 1件 → 0件