As websites continue to advance, the underlying protocols that they run on top of must change in order to meet the demands of user expected page load times. This blog is the second in a series on APMdigest where I will discuss web application performance and how new protocols like SPDY, HTTP/2, and QUIC will hopefully improve it so we can have happy website users.
Start with Web Performance 101: The Bandwidth Myth
Here are some common recommendations to optimize the steps of a web page request. Having looked at a number of web applications over the years, there have been numerous recommendations I have made over and over. Each web app is different, so these recommendations don't apply to every one of them, but should offer some guidance.
1. Reduce latency between user and server
I talked about this one in my last blog. It's not the bandwidth that matters most; it's latency. You need to reduce time it takes for a packet to go from your user or visitor to your server.
Whether the users are coming from the Internet or within the Intranet, the goal is to make the latency is short as possible. You can't get around the physics around distance, but there are some things you can do.
Externally, you have CDN providers that can help caching. Internally, you can deploy WAN optimization devices to do the same, and more.
If you have more control, you can simply ensure that your application is used by those who are closer to the server.
Closer distance between user and server can mask a lot of issues with an efficient application.
2. Increase number of connections, but up to a point
You want to maximize the number of connections you are making to the server to get as much data back to the visitor as possible. With HTTP/1.1, you don't want just one connection.
But you don't want too many connections either. Too many will start to impact the resources on both the server and the visitor's PC. And that would be bad for web performance.
Opening up these connections takes time as well. The TCP 3-way handshake needs to occur. It would occur every time, and if latency is not low enough, site visitors are impacted by this for every new connection that gets opened.
3. Compress all data
You want to minimize the amount of data that gets sent to the visitor's browser for it to download or render on the computer screen. So file sizes should only be as big as they need to be. If they cannot get any smaller, they should be compressed if that's possible.
This is something that doesn't happen enough. Nearly every modern browser supports gzip compression, yet some servers out there still do not have it implemented.
4. Increase server resources
Like bandwidth, server resources have become less of a constraint over the years. We now have multi-core, GHz processors, TB storage, GB RAM, etc. But there are still times when a website is using up these resources, and the immediate way to reduce response time may be to increase server resources. Due to the availability of such resources, it's usually not a big issue upgrading.
There are many other recommendations. This is just a sample of the things that can be done to improve web performance.
In upcoming blogs on APMdigest, I will explore the impact of SPDY, HTTP/2 and QUIC on web performance.