The new web protocols
- Alan Kay
Persistent connections not default
New header introduced:
Connection: Keep-Alive
Persistent connections default
HTTP pipelining
Only enabled by default in Opera
Still only FIFO, no true multiplexing
Headers are not compressed (~0.7kB)
Headers are re-sent a lot
Developers - Use several domains
Browsers - 6 connections per domain
Developed by Google
Aimed to reduce page load time by 50%
Minimize deployment complexity
Improve web security
Does not replace HTTP
Multiplexing - only one connection
Compressed headers
Prioritization
Only new/changed headers
Server push/hint
User-Agent, Host, and Accept-headers are static
Other headers are rarely changed
Data is sent to client without being requested
X-Associated-Content header
<html> <head> <title>My dog</title> <link href='main.css' type='text/css' rel='stylesheet'> </head> <body> <img src='dog.jpg'> <script src='main.js'></script> </body> </html>
Vastly enhances page-load for first-time visitors
Works best for non-cached resources
Redundant data if resource is cached
Server suggests specific resources
X-Subresources header
Better option for returning visitors
Works best for cached resources
27-60% without SSL
39-55% over SSL
Very good for high packet loss rate
Good for high RTT
SSL handshakes
Worse perfomance when connection is lost
Harder to implement
Chrome
Firefox
Opera
Jetty
Apache
nginx
Google?
gmail.com
wordpress.com
twitter.com
facebook.com (will soon support)
Under development by IETF's HTTPbis working group
Targeting 2014 for release
Protocols that are considered:
SPDY
Microsoft's HTTP Speed+Mobility
Initial draft Nov 2012 - straight copy of SPDY
SPDY is just something to start with