LCPを改善
トレースの largestContentfulPaint::Candidate 実データ:
| 時刻 | nodeId | size | imageLoadEnd | 要素 |
|---|---|---|---|---|
| 1126.6ms | 7 | 84,872 (412x206) | 1028.1ms | ヒーローカルーセル1枚目 |
| 1389.5ms | 39 | 168,100 (410x410) | 1087.8ms | ポップアップ画像 |
LCP画像は 1087.8ms にロード完了済み(FCP 1127ms より前)。
にもかかわらず LCP は 1389.5ms。Render Delay 301.7ms が実体であり、
画像最適化系の施策では LCP は動かない。
原因の連鎖(コードレベルで特定):
1. .popup{opacity:0;visibility:hidden;transition:.6s} / .popup.is-show{opacity:1}
2. index.html は class="popup"(is-show なし)
3. $(document).ready 内で popup.classList.add('is-show')
4. その ready を遅らせていたのが Google Fonts CSS の <link>(ttfbMs: 309)
— 直後のパーサブロッキング script を HTML仕様に従って 1317ms までブロック
→ DCL 1318ms → LCP 1389.5ms
裏付け: 1127〜1310ms のメインスレッドは 3ms超のタスクが1件もなく完全に idle。
| 項目 | 状態 |
|------|------|
| LCP要素の特定 | 完了(ポップアップモーダル画像。ヒーロー画像ではない) |
| レンダリングブロックリソース | 適用済み(observedLCP -13%) |
| JS依存の表示制御 | 適用済み(observedLCP が observedFCP と同値化=理論下限に到達) |
| CSS transition による描画遅延 | 適用済み(効果なし・発火経路が存在しないことを実測) |
| 画像のWebP化 | 適用済み(効果なし・LCP画像が唯一の JPEG だった) |
| fetchpriority | 適用済み(効果なし・Low → High に変化) |
| 適切なサイズの画像 | 適用済み(実転送量 -23.3%) |
| 画像の遅延読み込み | 適用済み(効果なし・swiper が全スライドをDOM生成) |
| PC用画像のスマホ配信 | 該当なし(_pc 命名0件、offscreen-images score 1) |
| 海外サーバーからの配信 | 該当なし(全237件が NRT / KIX、東京リージョン) |
| TTFB | 不採用(inventory編集では対処不可、理論下限を計測) |
| ルートTTFB | observedFCP | observedLCP |
|---|---|---|
| 962ms(現状) | 1133〜1135ms | 1133〜1135ms |
| 0ms(ルートのみ) | 147〜151ms | 147〜151ms |
| 全リソース 0ms | 58〜59ms | 65〜69ms |
LCPフェーズの施策により、TTFB=0 時点の理論下限そのものが
FCPフェーズ時点の396〜402msから147〜151msへ約250ms短縮された。
現状の observedLCP 1134ms と理論下限の差 約985ms のうち、約87%が TTFB。
TTFB は残存する最大の改善要因である。
observedFirstContentfulPaint: 約1133ms
observedDomContentLoaded: 約1137ms
observedLargestContentfulPaint: 約1133ms(FCPと同値=理論下限)
observedSpeedIndex: 約1149ms
CLS: 0.000
TBT: 0ms
Overall Score: 100
observedLargestContentfulPaint: 約1378ms → 約1133ms(-245ms / -17.8%)
observedSpeedIndex: 約1456ms → 約1149ms(-307ms / -21.1%)
observedDomContentLoaded: 約1314ms → 約1137ms(-177ms)
ページ全体転送量: 約3.50MB → 約3.15MB(-約350KB)
シミュレーションの LCP / SI は 195eb8e 以降 Lantern の内部計算が破綻している
(Render Delay が負値、TTFB が総LCP を上回る)。
本フェーズの評価は観測値 observedLargestContentfulPaint を主指標として行った。