Single, Persistent Connection - Only one connection is used for each web page, as
shown in the figure. The same connection is used as long as the web page is open.
Multiplexing - Requests and replies are prioritized and multiplexed onto separate
streams within the single connection. When the connection is stable, “head of line
blocking” - making every transfer wait for all previous transfers to complete - is
eliminated.
Header Compression and Binary Encoding - Headers are compressed using a new,
separate, secure standard, HPACK compression, which reduces the amount of data
crossing the network. Header information is sent in compact, binary format, not as
plain text.
Prioritization - Requests are assigned levels of dependency and requests at the same
level are prioritized. The server uses this information to order and assign resources to
fulfilling requests.
SSL Encryption - HTTP/2 allows you to add SSL support with, in some cases, no
performance penalty, making your site more secure.
SSL
How does HTTP/2 overcome the performance overhead imposed by SSL on HTTP/1.x? There
are four key techniques:
Having a single connection minimizes SSL handshaking.
Headers are compressed, reducing the time needed to send them.
Multiplexing means file transfers don’t wait on other requests.
Files don’t need to be in-lined, concatenated, or sprited, so caching can work
optimally.
When compared to a non-SSL implementation, there is still SSL performance overhead for
authenticating the single connection and for encrypting and decrypting data, but this remaining overhead should be more or less offset by the performance improvements in HTTP/2.
Note: The HTTP/2 specification also includes server push, in which the server sends files listed in a page’s HTML before they’re requested