"High Performance Browser Networking" by Ilya Grogorik, ISBN 978-1-449-34476-4
I was savouring this book one chapter at a time over several weeks. Ilya covers lots and lots of aspects affecting the web application's performance: from the choice of protocols, to browser refresh pipeline, to cell radio network hardware. There is a wealth of information to anyone trying to improve the performance on wired or wireless networks. The last chapter on WebRTC is worth the book's price alone!
It used to be that the only choice affecting application's performance was UDP vs TCP. Now there are lots of options: protocols, hand-shakes, security, multiple network traversals, and lots of others. The book collects a wealth of information in single place, but if its wisdom can be distilled to single insight, it is:
The application's performance today is mostly determined by the network's latency, and not by the bandwidth available.
Modern networks, even wireless ones, offer plenty of bandwidth, but it is the initial network wake up, plus DNS look ups, plus TCP handshakes, plus multiple requests, plus browser blocking due to JavaScript downloads and processing that are the root cause of the sluggish web experience. The author gives multiple examples calculating the difference in page load times for example, depending on such factors as "is the TCP window large enough?" or "is the channel still open or does it have to be renegotiated again?"
My single small complaint about this book is lack of practical advice on preparing to HTTP 2.0 transition. The author does not really point to any practical resources on SPDY, or discussing any examples how the web server resources might be done differently. This transition, as he explains will render majority of my current performance tricks obsolete (like JavaScript code concatenation), so it is weird that the author does not offer transitioning advice.
Great book, I give it two enthusiastic thumbs up!