Latency

I always felt that the inner workings of the web were a complete mystery to me, because that is the sort of stuff backend developers do. I was wrong. There are lots of lessons to be learned by looking up the right things that connect to the type of work you are doing, and in my case learn more about fascinating things like HTTP.

There is this great talk named TCP and the lower bound of web performance, which is about the beginning of the world wide web and how we got to the point we are today and why it works like it does.

Also in the talk is why we perceive a website to be slow at first and we have to wait: the TCP slow-start.

Computer networks have experienced an explosive growth over the past few years and with that growth have come severe congestion problems. (…) Our investigation of some of these problems has shown that much of the cause lies in transport protocol implementations (not in the protocols themselves): The ‘obvious’ ways to implement a window-based transport protocol can result in exactly the wrong behavior in response to network congestion. – “Congestion Avoidance and Control”

At the end of the talk, there was the question if increasing the congestion window would help to increase performance and avoid latency (because of the TCP slow-start). Turns out that Google has done research which became new standard.

Increasing TCP’s initial congestion window is a small change with a significant positive impact on Web transfer latency. (…) In contrast, a far simpler solution of increasing TCP’s initial congestion window to a value commensurate with current network speeds and Web page sizes is practical, easily deployable, and immediately useful in improving Web transfer latency. – “An Argument for Increasing TCP’s Initial Congestion Window”

The most striking point of the talk is that today I have extremely slow internet, things fail everywhere and I have activated Opera Turbo to get going. To me it also means stripping away unnecessary assets, like images and JavaScript and fancy fonts because I just want to read the web.

And reflecting on progressive enhancement: progressive enhancement is not about the people who disable JavaScript, it’s about latency and scripts that fail to load or make me wait longer for a page finish loading and I can start reading.