Andreas Grabner About the Author

Andreas Grabner has been helping companies improve their application performance for 15+ years. He is a regular contributor within Web Performance and DevOps communities and a prolific speaker at user groups and conferences around the world. Reach him at @grabnerandi

Diagnosing Obamacare Website: Healthcare.gov still lacks basic optimizations before it can mature

Since we did our first deep dive session on healthcare.gov we wondered if anything had changed that now makes it easier for US citizens to shop for new health insurance plans. We know from personal experiences that problems are not yet resolved. The website even went down last week again which probably led to more war rooms that could have been avoided.

In the first analysis blog we highlighted the massive usage of 3rd party components, the lack of basic Web Performance Optimization (WPO) best practices; process intensive JavaScript and some very slow server-side AJAX requests. The question is whether any of these recommendations have been implemented yet. Spoiler Alert: NOT A WHOLE LOT HAS CHANGED :-(

Weight Watchers: 80% of JavaScript Content Size Can Be Reduced Easily

On most pages we still find a lot of JavaScript files – 65(!) on the myAccount page alone. So – nothing has really changed here since our last analysis. This is sad because it seems to be so easy to make a significant impact by following a basic WPO best practice: Merging and Minifying JavaScript Files.

Let’s take a quick look at the registration page where we find 16 jQuery related JavaScript files with a total size of 1MB! A closer look shows us that most of these jQuery files are developer/debug versions. These files are not cleaned from comments nor are they minified – and of course – they are not merged which would reduce the number of roundtrips significantly:

This website doesn’t implement common WPO Best Practices which results in too many roundtrips and downloading too much content

This website doesn’t implement common WPO Best Practices which results in too many roundtrips and downloading too much content

What’s the benefit of minification? Let’s take a look at one particular file – jQuery.DataTables.js – with a size of 440kB. Putting it through a public available minifier such as http://jscompress.com reduces the file size to 83kb – that’s a reduction of more than 80%!

Content and 3rd Party Heavy Pages

There seems to be no change in the dependence of 3rd party content and the fact that Healthcare.gov uses multiple real user monitoring solutions. It would be unprofessional to tell the teams to remove some of them because I am sure there is a reason for it. However, consolidation and picking a monitoring solution that covers a larger area would definitely improve performance:

All pages are very heavy on 3rd party content and have non optimized resources such as Images, JavaScript or CSS files

All pages are very heavy on 3rd party content and have non optimized resources such as Images, JavaScript or CSS files

The other interesting fact on the homepage is a rather large background image. It is this “blurry” background image that is 350kB in size. I downloaded it, opened and re-saved without losing any quality with my free Paint.NET program. Now the size is 99kB – that’s a reduction of more than 70%!

Improvements in Server-Side AJAX Calls

An improvement can be seen in the AJAX calls done by the website. In our first analysis we saw requests taking up to 16.8s and requests that were done multiple times. This time we can see that these calls are much faster. Whether this is because they really improved server-side performance or whether there is just lower load on the overall web page caused by many people abandoning the site right now is hard to tell without getting a closer inside look at the server-side performance. From the outside it however seems like this has improved:

AJAX Requests to retrieve user account information has improved significantly compared to first analysis. Reasons are a little hard to tell.

AJAX Requests to retrieve user account information has improved significantly compared to first analysis. Reasons are a little hard to tell.

Modern Browsers Boost Page Load Time

One of the recommendations given to citizens during a recent CNBC interview was to upgrade your browser to the latest version. Why? Because newer versions have faster JavaScript and Rendering engines. Especially with JavaScript-heavy pages like healthcare.gov; this will give the end user a better user experience. We tested the same sequence of pages with Internet Explorer 9 and compared it with Internet Explorer 10. The following screenshot of the AJAX Edition Performance Report shows the results side-by-side:

IE10 showed better page load times across all pages – mainly caused by better JavaScript performance

IE10 showed better page load times across all pages – mainly caused by better JavaScript performance

A closer look at the results really showed that JavaScript parsing and execution was significantly faster in IE10. To achieve the same level of performance for older browsers as well it would be good to follow our recommendations from our previous blog and this blog: merging JS files, minifying files and additionally optimize some of this JavaScript code for older browsers, e.g: remove certain features or find faster alternatives.

My recommendation to Heathcare.gov: Get Your Homework Done – Then Mature!

I have to repeat most of my recommendations from my first blog. To sum it up: Get your Homework done by following the WPO Best Practices. This will have a significant positive impact on the end users. After that, think about maturing the approach to application performance management. It seems that many APM vendors are willing to help with blogs like this – but – it is time for healthcare.gov to mature:

  1. Setup Synthetic SLA Monitoring: Geography has a major impact – so setup your monitors in each state
  2. Use Real User Monitoring: Get performance data from real users because these are the ones that really matter
  3. Continuous Deep Dive Sessions: Just as this blog shows it is important to have continuous deep dive sessions to check the progress of changes. Embrace a cultural change across the involved teams.

Comments

*


three − = 2