We live in a world where performance and security play the biggest role on the web and the mobile world, but unfortunately the current HTTP version doesn’t help in meeting these high standards. Released in 1999, HTTP 1.1 has been serving the web for over 15 years and its update has been overdue. To overcome some of its shortcomings developers used several hacks like spriting, inlining and concatenating files to reduce the number of requests made. These techniques solved the problem to an extent, but the problem with the underlying protocol still existed. HTTP/2 attempts to solve many of the shortcomings and inflexibility's of HTTP/1.1.
HTTP/2: What makes it different
Termed as one of the biggest advancement in web technology, HTTP/2 is built on top of Google’s SPDY protocol, and its standard was approved earlier this year. It aims to make the web faster, more efficient and more secure. HTTP/2 improves speed by opening a single connection as opposed to a multiple connection thus reducing the additional loads on server. HTTP/2 is a binary, rather than text, protocol, making it more compact and efficient thereby reducing the overhead of translating information from text to binary.
HTTP/2 features:
Multiplexing: HTTP/1.x allows one request to be outstanding at a time on a given TCP connection. HTTP/2 overcomes this limitation by allowing several requests to be sent over the same TCP connection and receiving responses out of order, thus preventing one large response from blocking others.
Header Compression: In HTTP/1.x, headers were always an overhead adding several bytes per transfer, which could go into KB's if cookies are being used. HTTP/2 comes with HPACK header compression which reduces header size substantially by encoding the transmitted header fields using Huffman code. Another additional benefit is duplicated headers are avoided which is a huge win on mobile.
Server Push: Allows servers to proactively send multiple assets to a single client request without the client explicitly requesting it. This helps in avoiding additional roundtrip to fetch resouces linked to the HTML. Resources are pushed directly to the browsers cache, which can be cached independently.
Prioritization: Allows requests to be prioritized to help browsers request the most-needed files first
Security: Supports both secure and non-secure connections; however Chrome and Firefox will only support HTTP/2 over TLS. This means to take advantage of HTTP/2 will need to be served over HTTPS. Fortunately, there are new initiatives such as Let’s Encrypt, Let’s Encrypt is a new certificate authority that is providing free security certificates for websites. It’s a great initiative towards a more secure web.
Impact on developers:
The good news is that the HTTP/2 retains HTTP/1.1's syntax such as http method names, headers and status codes, thus allowing existing applications to be delivered without any modification. Many "best practices" of today like spriting, inlining, concatenating files and domain sharding are no longer necessary with HTTP/2 and are considered as anti patterns.
HTTP/2 is a huge step toward making the web faster and more responsive. With major browsers like Chrome, Firefox and IE providing support, it’s definitely something to move on to.
Useful links:
Browser Support: http://caniuse.com/#feat=http2
Current Implementations: https://github.com/http2/http2-spec/wiki/Implementations
HTTP/2: What makes it different
Termed as one of the biggest advancement in web technology, HTTP/2 is built on top of Google’s SPDY protocol, and its standard was approved earlier this year. It aims to make the web faster, more efficient and more secure. HTTP/2 improves speed by opening a single connection as opposed to a multiple connection thus reducing the additional loads on server. HTTP/2 is a binary, rather than text, protocol, making it more compact and efficient thereby reducing the overhead of translating information from text to binary.
HTTP/2 features:
Multiplexing: HTTP/1.x allows one request to be outstanding at a time on a given TCP connection. HTTP/2 overcomes this limitation by allowing several requests to be sent over the same TCP connection and receiving responses out of order, thus preventing one large response from blocking others.
Header Compression: In HTTP/1.x, headers were always an overhead adding several bytes per transfer, which could go into KB's if cookies are being used. HTTP/2 comes with HPACK header compression which reduces header size substantially by encoding the transmitted header fields using Huffman code. Another additional benefit is duplicated headers are avoided which is a huge win on mobile.
Server Push: Allows servers to proactively send multiple assets to a single client request without the client explicitly requesting it. This helps in avoiding additional roundtrip to fetch resouces linked to the HTML. Resources are pushed directly to the browsers cache, which can be cached independently.
Prioritization: Allows requests to be prioritized to help browsers request the most-needed files first
Security: Supports both secure and non-secure connections; however Chrome and Firefox will only support HTTP/2 over TLS. This means to take advantage of HTTP/2 will need to be served over HTTPS. Fortunately, there are new initiatives such as Let’s Encrypt, Let’s Encrypt is a new certificate authority that is providing free security certificates for websites. It’s a great initiative towards a more secure web.
Impact on developers:
The good news is that the HTTP/2 retains HTTP/1.1's syntax such as http method names, headers and status codes, thus allowing existing applications to be delivered without any modification. Many "best practices" of today like spriting, inlining, concatenating files and domain sharding are no longer necessary with HTTP/2 and are considered as anti patterns.
HTTP/2 is a huge step toward making the web faster and more responsive. With major browsers like Chrome, Firefox and IE providing support, it’s definitely something to move on to.
Useful links:
Browser Support: http://caniuse.com/#feat=http2
Current Implementations: https://github.com/http2/http2-spec/wiki/Implementations


