TBTを改善 | 項目 | 状態 | |------|------| | ロングタスク(50ms以上) | 検証済み(0件。ただし最長48.41msで閾値まで残り1.59msと判明) | | スライダーの複数初期化 | 適用済み(7c9bb5f・最長RunTask 44〜46.5ms → 25.2〜25.9ms) | | DOMContentLoadedハンドラ内の重い処理 | 効果なし(プラクティス1の波及効果で 10.44ms → 4.2〜5.1ms に縮小済み) | | jQueryの .each() 大量DOM操作 | 適用済み(7c9bb5f) | | 重複読み込みされたjQuery 1.7.2 / tab_new.js | 適用済み(016dcaf・48.41ms → 44.66ms) | | 同期XHR(.open(...,false)) | 該当なし(ハードコードされた false / !1 は0件) | | jQuery .load() による同期通信 | 該当なし(1件はHTMLコメント内で無効) | | 遅延読み込みライブラリ自体の負荷 | 該当なし(lazysizes等0件。ネイティブ loading="lazy" を26箇所で使用済み) | | jQuery一本化(条件付き) | 実施せず(実施条件「最長タスク45ms以上」が不成立。実測25.2〜25.9ms) | | webstore.js の defer 化 | 不採用(46cf452+revert・CLSスパイク率 10%→25%) | | 6-1-6.js のslick初期化を setTimeout 分割 | 不採用(57e7ec6+revert・最長RunTask が 4/5回で50ms超に悪化) | TBTの実測値は開始時も完了時も 0ms で変化していないが、 **「薄氷の上」だった状態を解消した。** | 項目 | 開始時 | 完了時 | |------|--------|--------| | TBT(実測値) | 0 ms | 0 ms | | 最長RunTask長 | 48.41 ms | 25.2〜25.9 ms | | 閾値50msまでの余裕 | 1.59 ms | 約24 ms(約15倍) | 同期スクリプトやレイアウト処理が意図せず他の処理の直列化・分割点として機能しており、 それを取り除くと他の指標が悪化する現象が、プロジェクト全体で4回観測された。 | フェーズ | 施策 | 意図せぬ悪化 | |----------|------|-------------| | サードパーティ除去 | New Relic の同期script除去 | LCPが悪化 | | CLS改善 | lazyLoad:"progressive" 除去 | CLSスパイク率 25% | | TBT | webstore.js の defer 化 | CLSスパイク率 10%→25% | | TBT | 6-1-6.js の強制同期Layout分離 | 最長RunTask が50ms超 | 根本原因は webstore.js(非圧縮1.68MB、jQuery + slick + カスタムコードの同期バンドル)。 抜本的な解決にはバンドルの分割が必要で、inventoryの編集では対処不可能。 プラクティス3(6-1-6.js の setTimeout 分割)は最長RunTask長を悪化させるため不採用としたが、 **FCPを 892ms → 418〜435ms と大幅に改善**した。FCP改善フェーズで再検討すること。 LCP: 1296ms CLS: 0.006 TBT: 0ms FCP: 908ms SI: 1934ms Overall Score: 100