The Speed Of Irish Websites

We spend a lot of time optimising our page load times because we have found a direct correlation between how fast a page displays in a browser and its bounce rate. There are still plenty of improvements left to roll out here, but I was interested in seeing how other Irish websites are faring at optimising their page load times.

I took the companies on the ISEQ 20 Index and added the top 5 indigenous Irish websites based on their traffic from Ireland according to Alexa and tested them for speed.  All tests were run using webpagetest.org and were run from Gloucester in the UK 5 times consecutively. The test emulated IE7 running over a 1.5 Mb/sec DSL connection.  For interest’s sake we also ran it on our own site and saw that we had several areas where we could improve.

A quick caveat: these results were run during just one period of one day and it could easily have been during a bad/busy period for one or more of the sites in question. If you’re interested in making a definitive list of the fastest and slowest Irish sites you should run the test again at various times of the day and on different days of the week.

The Fastest
Unsurprisingly the fastest sites are dominated by relatively simple sites that have largely static content. The page size is relatively low in all cases, maxing out at 250 KB with C&C Group.

  1. Greencore 2.0s
  2. Grafton PLC 2.1s
  3. Kerry Group 2.2s
  4. BOI 2.6s
  5. C&C Group 2.8s

The Slowest

  1. The Independent 15.9s, requiring 165 files and 1,500 KB
  2. RTE 9.8s, requiring 100 files and 478 KB
  3. Irish Times 8.7s, requiring 127 files and 866 KB
  4. Kingspan 9.3s, requiring 91 files and 1,316 KB
  5. FDB 9.1s, requiring 72 files and 613 KB

Full Results

In general the results were pretty disappointing with an average full page load time of over six seconds. Some very obvious improvements can be made. Text compression was not enabled on 18 of the 25 sites. There really is no excuse for a website not to have compression enabled these days as it is simple, well understood and implemented on every web server. This can reduce  bandwidth requirements by up to 70%.

The second major area for improvement is the sheer number of files that many of these sites require users to download. Each file has it own overhead and browsers can only download a certain number of files in parallel. On average each of the sites required 57 separate files to be downloaded, with The Independent requiring a truly massive 165 different files. This could largely be resolved by using CSS sprites and combining javascript & CSS files.

Start Rendering Sooner

Of course total download time doesn’t tell the whole story. Sometimes a good user experience can be achieved even if your page takes a long time to finish loading. The way to do this is to get the page to start rendering before the final files are down. The average start to render time for our sample list was 2.7 seconds and this is where some of the Irish web companies shine. For example, Paddy Power and boards.ie, despite being complex sites, start to render after just 1.5 seconds each giving their users a very acceptable experience.

So how does RevaHealth.com compare? Pretty well actually, but with  some obvious room for improvement. We had the fastest overall load time at 1.4 seconds, however our start to render time of 1.1 seconds was 300ms off of the mark. This comparison of home pages may be slightly unfair as RevaHealth.com’s home page is relatively simple compared to one of our typical landing pages. I reran the tests on Dentists in Manchester and we had a full loading time of 5 seconds which isn’t great and needs to be improved. Happily our start to render time was 1.5 seconds which I am pretty pleased with.

Let me know if I’ve made any mistakes in my analysis here. How does your site compare? Post your results in the comments

Tagged with:  

How to make your Web App faster

How To Speed Up Your Web Application from RevaHealth.com on Vimeo.

Web page render time is a critically important metric for any web app. It directly affects a site’s bounce rate because visitors can lose patience and hit the back button. It also affects a site’s conversion rate as visitors who do start browsing can get frustrated and give up. Page render time is a metric that anyone who is developing a web application needs to monitor closely and constantly.

At RevaHealth.com we have always made an effort to keep our page render times fast. We look at our initial page render times and page weight with each build and we try and make effective use of Ajax to speed up our internal page rendering time. However, as with nearly all web application development some non-error metrics gradually slipped until eventually we noticed that our page render time had become unacceptably long. We decided to take a couple of days off from coding new features and cleaned up the code. Here’s what we did.

Before we started, our page render time was about 8 seconds including the calls to Google AdSense, which added 2 seconds. (See the Pingdom trace at Note 2). We tackled 4 key areas to reduce the page load time.

Pingdom 1 - Click for full size

Pingdom 1 - Click for full size

  1. AdSense Optimisation – Two Second Improvement. The most obvious problem was the time it was taking to get the Adwords to load and render. We had up to three sets per page and this was adding about 2 seconds. There seems to be no way to speed this process up. The bulk of our users are interested in our content rather than our ads, so we put the ad units into their own iFrame and let them load after our content had loaded. You can see the effect on our dentists in Dublin page. (See Note 3)
  2. Combining Files – One Second Improvement. In most cases the number of files that a page forces the browser to download is more important to the actual weight of the page. This is because browsers are limited in the number of files that they can simultaneously download, and each file has a latency and bandwidth overhead. Reducing the number of files is frequently the easiest way to improve render time. We were already using a CSS sprite for images, but we had let a few get loose. We tidied this up and combined 5 more images into the sprite. We also got rid of one CSS file and combined 4 JavaScript files into one. The reduction of these 9 files cuts about one second off of render time.
  3. More effective use of simultaneous downloading – Half a Second Improvement. As mentioned above we use a CSS sprite to reduce the number of image files. This sprite was only referenced in the CSS and not in the HTML. This resulted in the HTML being downloaded, then the CSS, and then the sprite in that order. We changed this so that the sprite gets loaded in parallel to the CSS file by calling it in the HTML.
  4. Code Tidy up – Half a Second Improvement. This was never going to give us much of an improvement because we use compression on our web server which reduces the size of our HTML, CSS and JavaScript by about 70% – so despite the fact that the files are relatively large the actual bandwidth overhead is low. Still we managed to cut an uncompressed 30KB off of the HTML, 40KB off the CSS and 40KB off the JavaScript.
Pingdom 2 - Click for full size

Pingdom 2 - Click for full size

So what do we still have to do? By no means have we completed our page optimization and we have plans to knock a further second off of the page load time by:

  1. Dynamic image caching and potentially creating a sprite on the fly
  2. Using a content delivery network for our static images, JavaScript and CSS files
  3. Further optimized JavaScript

Notes

  1. I use the metric render time rather than page load time because what we are trying to measure is user experience – not the time it takes for bits to go down a pipe. Many web 2.0 applications rely on JavaScript to be downloaded and run in the browser before anything of value is displayed to the user. In older browsers this can frequently add a second or more on top of page load until the user is presented with the page.
  2. The trace does not include the dynamic thumbnail images that we pull in for each clinic. There are typically 3 of these images but there may be as many as 12. It also does not include the Google Adsense or Google Analytic calls.
  3. Pingdom

  4. Strictly speaking putting you Google Adsense Ad units into an iframe is against the Google Terms of Service, however Google has provided guidance that as long as you don’t deceive the visitor that the practice is acceptable.

Useful Tools

Tagged with:  
© 2010 WhatClinic.com Blog