Since the millennium the development of online resources and the reliance on financial and cultural organisations having an internet presence has forced web technologies to grow and develop at an exponential rate. These days there is greater demand (as much as there ever was) for the exchange of more and more information across the world wide web, as a result the systems which support the internet most develop alongside these changes to accommodate the continued sharing of such information. There are many facets to the internet and the world wide web, one of the most familiar to most users will be 'http'. Http or Hypertext Transfer Protocol (read more about a 'protocol' here) is a system which allows the transfer of data from a server to a client (the server holding the desired information, the client being the system the information is sent to - such as an internet browser). As this system is central to the day to day operation of the world wide web and is such an integral component in regards to the essential transfer of information, it makes sense that someday the system would require an update! (just to note that http went for 15 years without being updated)
Http/2 can be thought of as the 'new and improved' version of the classic http - the focus of the upgrade was to produce a system that could handle the pace of the current online environment, being able to work with such resource heavy content. The original http system performed its job extremely well and was a relatively simple system, as the internet began to develop there became a greater degree of latency when loading up webpages - a modern website makes on average over 50 requests to the server while loading up (moving information from the server to the client). The design of the new and improved http/2 thus needed to be a similarly simple system only with added features that reduced the latency mentioned. The following techniques are deployed within http/2 to facilitate this reduction in latency: -
Multiplexing - The previous version of http only allowed for one 'stream' of transfer at a time, all of the information being transmitted from the server to the client (and vice versa) had to channel through this one stream. This could be compared to traffic travelling down a one lane road from the server to the client - all of the cars must be allowed to travel the route before cars can use the road to travel back in the opposite direction. If there are fewer 'cars on the road' this movement of traffic isn't an issue, but once you have an increase in traffic trying to travel in both directions there becomes a 'traffic jam' (latency). Multiplexing brought about a 2 way stream (bidirectional sequence), as data was sent from the sever to the client the client could also make a request to the server while receiving the data. Also the data sent by the server can now be disintegrated and sent in a continual stream to the client, the data is then reassembled at the client end. Overall this action alone dramatically cuts the loading time of a website.
(Stateful Header) Compression - As demand for flasher, more intricate websites grows (especially in the realm of online businesses) there is an increased burden in terms of the amount of information that must be retrieved from a server. Media rich websites force the client to push multiple 'headers' onto the server, these headers are pretty much identical to each other and serve to produce latency as multiple headers are push over to the server at once. Http/2 features an 'H-Block' system which compresses these redundant header frames, thus reducing the stream of the headers and reducing the latency as a result. The system works in a similar way to the above (multiplexing) as in the header, once compressed, is transferred to the server which holds information about previously transferred header values. The headers are then fully constructed at the server end.
Request Prioritisation - This feature allows the client to provide a preference to a particular data stream, the client places preferences depending upon end user requirements (the client is 'tailoring' data streams to provide the optimal rate to each website load up on an individual basis). The preference is assigned using 'dependencies' and 'weights' which are assigned each data stream.
Server Push - The server 'pushes' additional information to the client on receiving an initial request from the client. This can be thought of as the server replying to a request from the client along the lines of "Oh you want Request A sent over, I've noticed that within Request A you reference Request B. I might as well send you both A and B at the same time!". This speeds up the exchange of the information and reduces the amount of requests that the client has to make to the server.
*Its worth noting that a website must be transmitting data using the https protocol to be able to use the http/2 protocol, here at Peters Web we automatically enable http/2 within all of our packages along with free SSL protection.
As always we are happy to chat if you have any questions relating to this article (or if you just fancy....a chat). Please get in touch via a support ticket (open a ticket) to our hosting department and we will do our best to get back in touch with you as soon as possible.