概要
- 小さなWebページ は 高速表示 が可能
- TCP slow start アルゴリズムが 14kBの壁 を生む
- 最初の14kB に重要情報を詰めることが 体感速度向上 の鍵
- 高遅延環境 では 1ラウンドトリップの遅延 が大きな影響
- 14kBルール は目安であり、 例外や進化 も存在
TCP slow startと14kBルールの仕組み
- Webページの容量 が小さいほど 表示速度 が向上
- 14kBページ は 15kBページ よりも 最大612ms高速 な場合がある
- 15kBと16kB の差は ほぼ無視できるレベル
- この現象の背景には TCP slow start アルゴリズムの存在
- TCP は IP を拡張し、 信頼性の高いデータ転送 を実現
- HTTP通信 は複数の TCPパケット で構成
- IP単体 では パケット到達確認機能 がない
- TCP は 到達確認(ACK) により 再送制御 を行う
TCP slow startの動作原理
- サーバー は 接続直後 にどれだけデータを送れるか 未知
- 初期送信量 は通常 10 TCPパケット
- パケットサイズ は 最大1500バイト (Ethernet標準)
- ヘッダー で 40バイト 消費、 実データ1460バイト
- 10パケット で 14600バイト(約14kB)
- 14kB以内 なら 1ラウンドトリップ で全データ送信可能
- 14kBを超えると 追加ラウンドトリップ が必要
遅延(レイテンシ)の影響
- ラウンドトリップ遅延 は ユーザー体感速度 に直結
- 衛星インターネット では 1往復612ms 以上かかる場合も
- HTTPS は 追加で2往復 必要、 合計1836ms の遅延
- 2G/3G回線・混雑時・不安定なネット ではさらに遅延増大
- パケットロス が起きると 再送で更なる遅延
14kBルールの活用方法
- ページ全体 を 14kB以内 に収めるのが理想
- 圧縮後14kB なので、 非圧縮で約50kB まで可能
- 重要コンテンツ (CSS/JS/テキスト)を 最初の14kB に配置
- HTTPヘッダー も 14kBに含まれる ため注意
- 画像は極小化 または プレースホルダー 利用推奨
14kBルールの例外と進化
- 初期ウィンドウ が 30パケット に拡張されているサーバーも存在
- TLSハンドシェイク で ウィンドウ拡大 が可能な場合あり
- サーバーが経路情報をキャッシュ し、再接続時に多く送信可能なケース
- HTTP/2 でも 基本的に14kBルールは有効
- HTTP/3/QUIC も 14kBルールを推奨
実践的な最適化ポイント
- 自動再生動画・ポップアップ・トラッキングスクリプト等 は削除
- 必要最小限のCSS/JS のみを 最初に読み込む設計
- ファーストビュー (above the fold)に必要な画像のみ読み込み
- 14kBルール は 絶対ではなく目安 と認識
参考資料
- High performance browser networking by Ilya Grigorik
- Increase HTTP Performance by Fitting In the Initial TCP Slow Start Window by Simon Hørup Eskildsen
- Critical Resources and the First 14 KB - A Review
- HTTP3 performance improvements
- 著者:Nathaniel, 公開日:2022年8月25日, 最終更新:2022年8月26日