補足施策 | # | コミット | プラクティス | 主要効果 | |---|----------|-------------|----------| | P10 | f2c110e | autoplay動画1.5MBの二重DL解消と遅延化 | 初期転送量 -1.51MB(-59.1%)、loadEventEnd -178.3ms | | P2 | 729d7d2 | 静的アセット249件への Cache-Control 付与 | uses-long-cache-ttl / cache-insight ともに 0.5→1.0 | | P5 | 30c5d20 | HTMLのminify | 400,088→259,378B(-35.2%) | | P7 | b2edd2a | JavaScriptのminify(15本) | unminified-javascript 0.5→1.0、実効削減 -39,550B | | P6 | d836238 | 残存未使用CSSのパージ | レンダーブロッキングCSS -28.7% | | P3 | 4b0946c | 検索パネルのオンデマンド化 | FCP -20ms、DOM -1,424、UpdateLayoutTree -40% | | P4 | af58ccd | カテゴリツリーの遅延読み込み | DOM -694(累積 4,588→2,470、-46.2%) | | P8 | 7444779 | 残存する過大画像の適正サイズ化(派生161件) | uses-responsive-images 0.5→1.0、全ページ画像 mobile -1.92MB | | P1 | ace19c0 | index.js への async 付与(必須実施項目) | 効果なし(実測で確定) | | P9 | 19030c5 | cache-control: no-store 解消による bfcache 対応 | bf-cache 0→1.0、戻る操作 757ms→55ms(-92.7%) | | - | 7f2f43d | Swiper preloadImages: false の明示 | 効果なし(再発防止としての価値) | | 項目 | 状態 | |------|------| | WebP最適化 | 適用済み(LCPフェーズ。JPEG/PNG 0件) | | JS第1段階(body末尾移動) | 適用済み(TBTフェーズ。head内script 0件) | | JS第2段階(async付与) | 実施済み(P1)・効果なし。外部15本中14本がasync不可 | | CSS結合 | 適用済み(FCPフェーズ。link rel=stylesheet 1件のみ) | | TTFB 50msシミュレーション | 廃止項目(仕様どおりスキップ) | | 項目 | 根拠 | |------|------| | Google Fonts の廃止 | Webフォントリソース0件、link 5件中フォント関連0件 | | 日本語Webフォントの廃止 | @font-face は swiper-icons の base64 1件のみ(P6で削除済み)。デバイスフォント使用 | | 高速ネットワークのシミュレーション | 帯域中央値 113.7Mbps、ping 17.3ms、network-rtt score 1 | | 監査 | 開始時 | 完了時 | |------|--------|--------| | uses-long-cache-ttl | 0.5(97リソース) | 1.0(0件) | | cache-insight | 0.5(2,514 KiB) | 1.0 | | unminified-javascript | 0.5(39 KiB) | 1.0 | | uses-responsive-images | 0.5(139 KiB) | 1.0 | | bf-cache | 0 | 1.0 | | total-byte-weight | 1.0(2,555 KiB) | 1.0(797 KiB) | | image-delivery-insight | 0.5(519 KiB) | 0.5(323 KiB。残存56%はDPR未考慮の誤検出) | | unused-css-rules | 0.5(18,837B) | 0.5(14 KiB。満点化を目的化すべきでない) | | dom-size | 0.5(4,588要素) | 0.5(2,470要素、-46.2%) | | uses-passive-event-listeners | 0.5 | 0.5(jQuery 3.4.1 内部。対象外) | 1. unminified-html 監査は Lighthouse に存在しない。gzip後でも -23% 残るため 「gzipしているからminifyは不要」は成立しない。 2. unused-css-rules を満点にすることを目的化すべきでない(初回ロードで当たらないだけの ルールを未使用に数える。16シナリオの実測カバレッジで裏付け)。 3. image-delivery-insight の残存56%はDPR未考慮の誤検出。対処すべきでない。 4. DOM要素数の削減量とメインスレッド削減量は比例しない。 5. visibility:hidden はレンダリング対象のため不可視パネル配下の画像8件が実際にDLされていた。 6. 1つのヘッダ(no-store)が2つの弱点を生んでいた(bfcache無効化とHTMLのCDN非キャッシュ)。 7. UIライブラリの既定オプション(Swiper preloadImages)がパフォーマンス施策を静かに打ち消す。 - P9(no-store解消)はセキュリティ要件との兼ね合いがあり「提言」の位置づけ。 6件の Set-Cookie を返すログイン状態依存ページであり、無条件に外すべき施策ではない。 - P2(Cache-Control)の実装時はURLバージョニングの併用が必要。 LCP: 193ms CLS: 0.000 TBT: 0ms FCP: 178ms SI: 524ms Overall Score: 100 Lighthouse総転送量: 2,616,459B → 816,557B(-68.8%)