We updated test server to the latest HTTP/2 draft-12 implementation.
As before, we service h2-12
at port 443 and h2c-12
at port 80. We
also continue to support SPDY and HTTP/1. If http URI is used to
access to this site, we issue ALTSVC frame and Alt-Svc header field to
indicate that we also service same contents at port 443 in h2-12
protocol.
Let’s review the highlights of the changes in draft-12. The
dependency based priority was introduced in draft-11. In draft-12, it
is further enhanced (and simplified). nghttp2 fully implements
dependency based priority mechanism. From our experience, we know
that it is crucial to retain information of closed streams to make the
prioritization work. This is also covered in the draft-12. nghttp2
retains closed streams as much as possible. The upper bound of the
sum of active and retained closed streams are
SETTINGS_MAX_CONCURRENT_STREAMS
the server declares.
BLOCKED frame is newly introduced in draft-12. It indicates that DATA frame transfer is blocked due to exhaustion of flow control send window. nghttp2 implements transmission and reception of BLOCKED frame for both connection and stream level flow control.
Compressed DATA frame is introduced in draft-12. This is supposed to
be a replacement of Transfer-Encoding: gzip
in HTTP/1. nghttp2
supports compressed DATA frame in its library API. But the public
test server does not support compress DATA frame at the moment.
To access this site via HTTP/2, you can use nghttp client included in nghttp2 repository. It works with both https and http URI. node-http2 client may also work.
The easiest way to test HTTP/2 is use h2-12 enabled Firefox browser.
You can find the download link from
here. Don’t forget to
set network.http.spdy.enabled.http2draft
and
security.ssl.enable_alpn
to true in about:config screen. Please
note that Firefox only supports HTTP/2 in https URI.