FCPを改善 | 項目 | 状態 | |------|------| | GZIP圧縮(必須) | 適用済み(未圧縮2件に適用。FCP効果0msを実測証明) | | 複数CSSの一本化(必須) | 適用済み(9本→1本、リクエスト-7件) | | 不使用CSSの存在 | 適用済み(purgecssで転送-19.7%、デッドCSS削除) | | script要素によるレンダリングブロック | 適用済み(全19本にdefer。RB 13件→1件) | | preloadの誤用 | 適用済み(未使用preconnect 7オリジン削除) | | CDN同一ドメイン化 | 該当なし(外部CDN 0件、全てセルフホスト) | | CSSが別ドメインから配信 | 該当なし(CSS 9件すべて同一ドメイン) | | CSSの@import使用 | 該当なし(CSS 9本を展開して全文検索、0件) | | document.write | 該当なし(全JS 504,932文字を検索、0件) | | Google Optimizeによる表示制御 | 該当なし(async-hide 0件) | | クリティカルCSSの逆効果 | 該当なし(動的CSS挿入 0件) | | アニメーションによる表示遅延 | 該当なし(全体を隠す実装なし) | | (追加探索)JSのminify | 適用済み(6本をminify、wastedBytes -81%) | | 項目 | フェーズ開始時 | 完了時 | |------|--------------|--------| | render-blocking-insight | 20件 / 132,695B | 1件 / 24,152B(-92.3% / -81.8%) | | stylesheet転送量 | 57.0KB | 44.7KB(-19.7%) | | stylesheetリクエスト数 | 11 | 4 | | unminified-javascript | 25,760B | 4,905B(-81%) | | preconnectオリジン | 8(うち7未使用) | 1(使用中のみ) | 観測FCP 1,247ms のうち 1,077ms(86.5%)がルート文書のTTFBだった。 しかしLighthouseのLanternは、オリジンのサーバ応答時間を観測最小値(76.05ms)で 代表させるため、この1,077msを外れ値として捨ててスコアを算出する。 その結果「FCPスコアは100点なのに server-response-time 監査は score 0 (Root document took 1,070 ms)」という矛盾した状態になっていた。 P-FCP-8 で ttfbMs を 1070→100 に変更するシミュレーションを行った結果: | 指標 | 変更前 | 変更後 | 変化 | |------|--------|--------|------| | 観測FCP | 1,199ms | 199ms | -1,000ms(-83.4%) | | 観測LCP | 1,973ms | 1,011ms | -962ms(-48.8%) | | 観測SI | 1,744ms | 756ms | -988ms(-56.7%) | | 観測TTFB | 1,075ms | 105ms | -970ms(-90.2%) | | スコア算出FCP | 98ms | 94ms | ほぼ不変 | **スコアは動かないのに実際の表示は約1秒速くなる**ことを実証した。 注記: P-FCP-8 は inventory の ttfbMs を書き換えたシミュレーションであり、 実際のサーバー改修ではない。フロントエンド(inventory)の編集では対処できない 領域の改善ポテンシャルを数値化したものである。 第1段階で `</body>` 直前の6本のみに defer を付与したが、 render-blocking-insight は13件のまま1件も減らなかった。 **末尾のスクリプトはそもそもレンダリングをブロックしていない**ためである。 真のボトルネックは `<head>` の10本(jQuery 146KB を含む)だった。 LCP: 213ms CLS: 0.000 TBT: 0ms FCP: 94ms SI: 461ms Overall Score: 100 (観測値: FCP 199ms / LCP 1,011ms / SI 756ms)