About real user performance monitoring of websites

About real user performance monitoring of websites

Your website is live with the best functionality and you tested to make sure it all loads faster. You notice your site visitors are not converting as users as much as you expected. One area you should look at is real user performance monitoring (RUM).

What is the real user performance of websites?

In simple terms, real-user performance refers to the performance as seen by your end users. When you performance-tested your site, you would have done in controlled and almost ideal conditions (e.g., inside an intranet, with the latest browsers). Your end-users will not have the same luxury. You need to make sure to performance test in conditions that are as much similar to your end-users.

According to one study, 40% of users abandon a website that takes more than 3 seconds to load.

Factors that matter

An enterprise application at a minimum consists of a server (application/web-server), database and, an application. Each of these layers has to be profiled separately and tuned for optimal performance. The application layer is the one that eventually emits the HTML pages seen by the end-user, is the focus of this blog.

when a web page is requested by a browser, the request consists of following individual timings:

Resource timings
(Taken from https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API)

As you can see, there are several individual sub-tasks for a resource to download from the server to your browser. Knowing the resources and the time taken by each sub-task helps in identifying the problem areas and improving the real user performance.

Factors that contribute
  • Not using a proper browser caching mechanism or not using the right way.
  • When browser loads a resource, the fastest way possible is, loading from browser cache itself. For this, you should look at the headers 'Cache-control' and 'Expires' and set them per your application needs.
  • Not using a Content Delivery Network (CDN).
  • When you access a resource (script/stylesheet file), the CDN retrieves them from your server and servers you, keeping a copy for themselves. Next time onward, the copy is the one that is served to users. This reduces the load on your servers significantly. In addition, the CDN is distributed across the globe such that, the one that is serving the file to a user is the one that is closest to the user, thus providing location proximity which reduces network hops, and greatly reduces the time taken to load the file by the user.
  • A large number of resources such as javascript, stylesheets, fonts loaded by the page. Each request has to make a connection to the server for the resource to load. Try to merge the resources where possible and practical and load them as one.
  • Large size images. Make sure to compress the images and adjust them to the size displayed on the browser. There are several free and commercial image compression software that does a good job at compression without overly compromising on the image quality.
  • Browser characteristics (such as oldest IE vs newest Chrome/Safari)
General guidelines to improve your website performance (and so, end-user performance).
  • Where possible, merge the java-script, stylesheet files so that the number of requests your browser makes is minimal. Minify these files.
  • Use a content delivery network (CDN) to load the static files.
  • Make sure to use browser caching with longer expiration dates.
  • Optimize (/compress) the images that are used on your website.
  • Use compression (such as gzip) when delivering the files to your browser by the server.
  • You should consider providing a low bandwidth version of your site where the network speed is not as much faster.
  • Where possible, see that the servers are closer to your end users. This can reduce networks hops and increase load speeds.
  • Services such as SiteDynamics sends notifications when end user performance metric (such as load time seconds) is more than a set threshold. You can use the information to troubleshoot and fix resources causing the performance issue.
  • Use newer http/2 protocol. Popular web servers such as Apache and Nginx already support this.
  • Use html 'prefetch' for resources.

Website Performance is a vast subject and there are several individual contributing factors for bad performance. Spend sufficient time to improve your website real user performance that helps in overall user experience, and helps your business. Knowing which resources are causing performance to drop and working on them for improvements is the key.

Take a moment to share the above post.