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件