HTTP/2
HTTP/2 について。。。
Google の SPDY をベースにしている
HTTP/1.1 以前
リクエストのたびに TCP コネクションを切断していた
HTTP/1 では高速化のために、複数の TCP コネクションを貼っていた
けど制限がある
同時に遅れるリクエストも6つまで(ブラウザによる)
ドメイン単位なので、リソースを別ドメインに分散するという高速化手法あり
HTTP/2 は1つのコネクションの中でリクエスト/レスポンスを多重化できる
コネクションの中にストリームという仮想の単位を作成
複数のストリームが並行して走る感じ
1つのコネクションの中で、別々のストリームに紐づくフレーム(データの単位)が順不同で流れることができる
これにより HTTP Head of Line blocking を解消
HoL blocking は 1つのコネクションの中で HTTP request を連続して投げるパイプラインにおける制約で(Keep-alive という機能を使っていた)、response は request の順番でないといけないというもの
他にも
ヘッダーの圧縮
クライアントが優先度を指定できる
サーバープッシュ
TCP HoL blocking は解消できていない
複数のストリームにしても、TCPレベルではそんなことは関係ないので、HTTP でのストリーム A のパケットがロスすると同じコネクション上の他のストリームのパケットもつまる
パケットロスについては http2 よりも http1 のほうが効率がよかったという話もある
Head of Line Blocking - High Performance Web 2015 - Qiita
HTTP/2とは - JPNIC
HTTP/2 の概要  |  Web Fundamentals  |  Google Developers
普及が進む「HTTP/2」の仕組みとメリットとは | さくらのナレッジ
HTTP/2 vs. HTTP/1.1: How do they affect web performance? | Cloudflare
HTTP/2の特徴 HTTP/1.1との違いについて | REDBOX Labo
HTTP/1.x のコネクション管理 - HTTP | MDN