SPDYとHTTP/2の概要
SPDY(スピーディー)はHTTPを基にに高速化を行ったプロトコルである。TLS接続の上にセッション層を追加し、単一のSPDYセッションで複数のリクエストを送受信する。TLSの拡張仕様の一つであるApplication-Layer Protocol Negotiation (ALPN) をベースにしているのでHTTPSを使っての通信が必須となっている。SPDYとしての最終バージョンはSPDY3.1で SPDY/4 は HTTP/2 に吸収された。
HTMLの読み込みの高速化は帯域の増加よりもRTT短縮の方が効果が高い。HTTP1.1では最大接続数を超えるリクエストはダンロード開始待ちが発生していたが、SPDYではリクエストが同時に行われることで、読み込みが高速化される。ただし、SPDYは大量のリソース使っているサイトでは効果が高いが、少ない場合には効果が薄い。また、サードパーティドメインのリソースではそれぞれのドメインに対する接続オーバーヘッドが発生する。回線の品質が悪くパケットロスが多く発生する場合にはHTTP1.1よりも性能が劣化することになる。
対応状況
クライアント名 | platform | SPDY | HTTP/2 |
---|---|---|---|
Chrome 10 | All Platoform | Yes | No |
Chrome 40 | All Platoform | Yes (SPDY/3.1) |
No |
Chrome 41–current | All Platoform | Yes (SPDY/3.1) |
Currently only HTTP/2 over TLS |
Firefox 13 | All Platoform | Yes (SPDY/2) |
No |
Firefox 15 | All Platoform | Yes (SPDY/2, 3) |
No |
Firefox 27 | All Platoform | Yes (SPDY/2, 3, 3.1) |
No |
Firefox 28 | All Platoform | Yes (SPDY/3, 3.1) |
No |
Firefox 36–current | All Platoform | Yes (SPDY/3, 3.1) |
Currently only HTTP/2 over TLS |
IE 11 | Windows 8, Windows 8.1 |
Yes (SPDY3) |
No |
Safari 8 | OS X yosemite(10.10) | Yes (SPDY/2, 3, 3.1) |
No |
Safari | iOS8 | Yes (SPDY/2, 3, 3.1) |
No |
クライアント名 | platform | SPDY | HTTP/2 |
サーバー名 | SPDY | HTTP/2 |
---|---|---|
Nginx 1.5.10 | Yes (SPDY/3.1) |
Yes |
Apache 2.2 + mod_spdy | Yes (SPDY/3) |
no |
Apache + mod_h2 | no | Yes |
Apache Tomcat8 | Yes (Experimental) |
No |
Jetty 7.x | Yes | No |
Jetty 9.3 | Yes | Yes |
Wildfly | No | No |
Netty | Yes | Yes |
サーバー名 | SPDY | HTTP/2 |