Over 85% of the web is still using HTTP/1.1, an old protocol that was introduced back in 1991, and was not designed to handle the amount of data we are dealing with today. In 2015, we finally got a much-needed update to the most used protocol on the web — HTTP/2. It’s astronomically faster, more secure, and generally offers a much better experience for everybody. Here’s how the current HTTP/1.1 protocol looks like:

Despite HTTP/2 having released 2 years ago, websites are still slow to make the transition, which is why we built Falcon Push in hopes to ease that transfer. The essential idea was to take one of the most beneficial and tricky features of HTTP/2, server push, and automate it as much as possible.

What is HTTP/2?

HTTP/2 was originally developed by Google under the name SPDY as an experimental protocol to replace HTTP/1.1. Eventually IETF made part of SPDY the HTTP/2 standard.

HTTP/2 is aim to solve the following problems:

Create a negotiation mechanism that allows clients and servers to elect to use HTTP 1.1, 2.0, or potentially other non-HTTP protocols.

Maintain high-level compatibility with HTTP 1.1.

Decrease latency to improve page load speed.

The most interesting part is the methods to reduce latency. HTTP/2 introduces several mechanism that HTTP/1.1 can’t do, such as compressing HTTP headers, server push, multiplexing requests, and requests pipelining.

We think we’ve come up with a good solution for server push and can’t wait to show you how it works!

Server Push

Server push provides you the ability to push data to the client without the client ever requesting it. In theory, we could push some assets on the page when the client first makes the request, thus saving the time for the client to make follow up requests. And that, could use some optimizations, which is where our middleware comes in!

Our Node JS implementation

Falcon Push is a Node/Express middleware library that easily plugs into your server for server push implementation. On server startup, it will automatically parse any HTML files you have and extract the static files you need — these static files include any css, js, jpeg, etc.

Once a client makes a request to the server, our middleware will run and create a cache awareness mechanism using cookies and a Golomb compression hash of all the assets being pushed. This will cache the assets that are ready to be pushed in the client’s browser, effectively reducing page load time on subsequent page requests. Once the caching mechanism is finished, our middleware will send all the requested assets using server push, which is all done in one client request.

You can checkout the speed differences with our middleware at https://falconpush.io, github, and npm.