TCP slow-start

TCP Slow Start

So, how about that TCP slow start everybody’s talking about (they’re not? duuh!)? Well, you might think of it as a security measure embedded in the lower layers of network communication that prevented the Internet from collapsing in the 1990s. It basically makes every network connection start at a slow rate and gradually increases its speed. That’s the explanation for combining many small resources into bigger files (image sprites, combined javascript etc) – the overall download speed will be higher.

TCP Slow start

Until HTTP/2 lands with full support from browser vendors the TCP slow start feature will keep haunting web devs in their caves. Just to remind you – slow start is the mechanism that causes every internet connection to gradually increase its speed until the maximum speed is reached (or until the download finishes – whichever comes first). This can be a serious performance issue if you consider making dozens of small, independent downloads, as is the case with many web assets that are downloaded asynchronously. If all of your assets are small, but you have a great many of them, linking to all these jquery libraries, tiny little glyph icons, CSS parts etc. chances are all these connections opened to download these assets will be finishing before the full link speed is reached and thus wasting a lot of time due to unused bandwidth. In such case it’s important to bundle these resources together – use sprites for icons, combine and minimize CSS and JS and so on.

One attempt to optimize this area is using the TCP Fast Open method, which is widely covered in many sources, e.g. here.