HTTP 2.0

From wiki.mikejung.biz
Jump to: navigation, search

HTTP 2.0 Overview

As of February 9th, 2015 the HTTP 2.0 Protocol is at version 1.8. The final spec is not yet finalized, so until that day, consider this information to be "in the works". The Internet Engineering Task Force (IETF) is the group responsible for standards such as HTTP and they are the primary group that handles changes.

HTTP 2.0 was essentially started by Google with their SPDY protocol. Almost all of SPDY's functionality has been moved into HTTP 2.0 and Google has mentioned that eventually the SPDY protocol will disappear / merge into the main HTTP 2.0 standard.

Up until now, we have all been using HTTP 1.1, which was standardized in 1999. A lot has changed since then, networks are significantly faster than they were 16 years ago, and so are browsers and desktops / mobile devices. HTTP 1.1 was created in an entirely different world than we live in now. HTTP 2.0 is being created to take advantage of lots of new technology and the ever improving network speeds.

With HTTP 1.1, browsers and webservers are not efficiently utilizing the network, or processing power of the PC or mobile device that's visiting a webpage. Currently your browser can only process so much data in parallel at once. Because of this your browser can't request and download all the data using one TCP connection, it has to make many connections to get all the data to display a website in a browser.

This causes slow loading times. HTTP 2.0 aims to fix this by allowing for more data to flow between less connections, this means that websites load faster and web servers can get more work done in less time. In order to increase network and browser performance you must reduce the amount of TCP round trips needed to display content. The less round trips that happen, the less latency there is, this means better performance using less resources.

HTTP 1.1 has a lot of tricks that can be used to get around the latency issue, however these tricks involve all kinds of changes to the way your website works and doesn't always work as intended. Techniques like spriting allow you to create one large image that is made up of many smaller images, your browser is able to request one large image, then it chops up the image into smaller images and renders the webpage. This works ok, but the idea with HTTP 2.0 is to make the protocol handle this automatically instead of forcing people to use tricks to improve performance.

HTTP 2.0 is being developed with the following goals in mind:

  • Reduce the sensitivity to latency. This means making latency less of a concern in general by making the protocol smarter when it comes to requesting content.
  • Fix HTTP Pipelining so that requests don't block rendering of other objects like images, javascript, or whatever. No request should block future requests.
  • Allow for the browser to use many connections in parallel without having to worry about webserver / browser compatibility.
  • Make all these changes without breaking any previous functions. (your grandma should still be able to use IE 6 to view yahoo).

HTTP 2.0 Main Features

  • Backwards compatibility with HTTP 1.1. Still uses TCP and the client still requests data from the server. The underlying principles of TCP/IP must remain intact.
  • HTTP:// and HTTPS:// structure must remain in place, and no new additions should be made at this point.
  • HTTP 2.0 servers should be able to proxy older HTTP 1 servers since they will remain online and part of the Internet for years to come.
  • HTTP 2.0 should not remove for reduce useful features or functions. HTTP 2.0 should not cause compatibility issues with current browsers, websites and webservers.

HTTP 2.0 Performance

HTTP 2.0 Server Configuration

HTTP 2.0 Server Browser Configuration

HTTP 2.0 Links and Further Reading