うな(。・ε・。)

Android, iOS, AppEngine まわりのめもめも

HTTP/2 (SPDY) とパフォーマンスのめも

主にパフォーマンス関連でじぶんようのメモです

  • HTTP/2 によって解決した問題は、「同時リクエスト制限」によるものが殆どです。
    • HTTP/1.1 では「一本のコネクションで同時に一つのリクエストしか出来ない」だったものが、HTTP/2 では「一本のコネクションでたくさんのリクエストを同時に出来る」と理解して良いと思います。
  • 転送全体としてみれば非常に効率的になりましたが、レイテンシに関する問題はあまり解決されていません。
    • たとえば、TCP の初期接続コスト、TCP スロースタートによる 14KB 問題は依然として存在します。
  • 当たり前ですが、ブラウザ側でレンダリングが遅くなることに対してはノータッチです。
  • HTTP/2 ではドメインシャーディングが逆効果になります。
    • 別のドメインに対しては別のコネクションが張られるため、TCP の初期接続コストが問題になります。
    • 特に、CSSレンダリングをブロックするため、同一ドメインから配信することが推奨されます。(JS は defer にさえしていれば無問題)
  • CSS Sprites や CSS/JS の結合は依然として有効です。
    • いくら同時リクエストし放題といっても、なんだかんだでリクエストにはコストが掛かります。減らすにこした事は無い。
  • その他のパフォーマンステクニックは依然として有効です。

結局、レイテンシが問題になりやすいモバイルではあまり速くなってないんじゃ疑惑… 画像を大量に貼ってるページとかは速くなりやすいと思います。

大量の画像を速く表示するために画像を BASE64 して Chunked transfer response する暗黒魔法は必要なくなりました。

でも、ちゃんとチューニングしてるページとかはあまり変わらなくて、恩恵を受けられるのは Server PushCSS, JS を HTML と一緒に送ってあげることくらいでした。