Back in the day of the early web there was little to choose, pages were server by either the CERN or the NCSA webserver. I remember trying both and both had their problems, the NCSA stuff was picked up by others and code was being fixed with short intervals. The patches on the NCSA code made “a patchy server” and the Apache webserver project was born.
Although Apache is still big quite a few other projects were started and some of them have have found their own niche and are doing well. For instance NGinx became a great contender and Webtic uses it on some projects where we gained significant better performance by just swapping the webserver.
But there are new kids on the block, while we are surfing a lot of work is done on improving the HTTP protocol. In February 2015 the proposed standard was approved and just recently, in May 2015, the standard is published as RFC 7540
Firefox and Chrome have support build in for quite a while now and others are following, check the current status.
One of the most innovative idea’s of the new protocol is to get rid of the “many requests in sequence” and maintain a single connection between server and browser over which transfer of multiple files is multiplexed.
All these techniques are boiling down to getting as much information over to the client in a single request. You can imagine that loading 10 single icons by doing 10 requests to the server is less efficient than loading one bigger file and do some client-side processing.
Well forget about these techniques, with HTTP/2 they became irrelevant as the protocol optimises it for you.
Good stuff, and good times are awaiting us. Now is the time to experiment with the new servers. There a many projects already and hopefully some of these will become the the new standard server of the future.
Some of the more interesting projects in this list are http2 in go, we played already a bit with h2o and while not on the list recently kore.io attracted some attention on Hackernews.
My personal hope is that some of these projects evolve web-development into a new phase and integrate the parts we need for creating web-apps. Integrated asset management, thumbnail generation, navigational services and configuration through-the-web come to mind 🙂