Web Performance

What Google Really Thinks About the Performance of South African Websites

In my quest to do my part in making the South African web faster, I decided to analyse some of my favourite South African websites to see if I could improve them in any way. As a big fan of Google, I decided to use their PageSpeed Insights tool to see what Google thought of the performance of these websites. If you are unfamiliar with Google PageSpeed, it’s a web-based service that analyses a web page (from the perspective of a desktop computer and a mobile phone) and gives it a score out of a hundred. The higher the score, the better. A score below 85 would suggest the web page is in need of optimisation. So with that said, here’s my list of South African websites with their respective scores:

Gumtree 87 80 84
Takealot 85 66 76
Orange 76 72 74
TechCentral 79 68 74
Kalahari 69 76 73
MyBroadband 54 74 64
BandwidthBlog 62 62 62
Gadget 64 54 59
News24 35 76 56
IOL 47 35 41

Some interesting stats that came out of this analysis:

  1. 70% of the websites had no caching of all/some of its resources.
  2. 40% of the websites had no compression on all/some of its resources.
  3. 60% of the websites had poorly optimised images.
  4. All the websites had scripts and style sheets that blocked the rendering of the page.

These figures suggest that website performance is not a priority for the owners of these websites. Ironically, the worst performing websites in my list (News24, IOL) are also the websites with the most visitors.

I’ve tried emailing some of these companies to see if they’d be willing for me to work with them to improve their websites, for free, yet I have not received a single response.

If you’d like to help me in my quest to make the South African web faster, please share this post (and my blog) with your colleagues and friends so we can bring about more awareness of the¬†inefficiencies that exist within the South African web.

Web Performance

How To Improve Website Speed: Caching

Question: What is the fastest request a web browser can make?

Answer: One that doesn’t need to be made.

Picture yourself coming home late from work – you’re starving, you’re thirsty, you need food. You arrive home and immediately make your way to the fridge. You open the fridge door and see that every shelf and container is empty. In frustration you grab your car keys and head out to the nearest shopping mall to fetch some groceries.

In this analogy the fridge is like your web browser; it stores content. The containers within it are like the cache within your web browser. A cache is simply an area to place content so that it can be accessed more quickly. In this context it is keeping the content closer to the user. You shouldn’t have to make the journey to the food store (destination web server) every time you want some food (web content). You should be able to store some of the food in your fridge so that you don’t have to go out so often. Caching is what enables you to avoid making costly journeys over the Internet to retrieve web content like images, style sheets, and JavaScript files. By storing some of the content within the browser cache, less data needs to be transferred resulting in improved page load times and lower bandwidth costs for both the user and the website owner.

If you’re a website owner, you should check if caching has been enabled on your web server. If it is enabled, make sure expiration periods have been declared for your page resources. The expiration period will inform the web browser when to ask for a fresh copy of the resource. The expiration date is relative to when the first request was made, so although the expiration period will be the same for all users, the specific date a resource expires may be different for each user.

Sample Apache config to enable caching with 1 month expiration period:

<IfModule mod_expires.c>
   ExpiresActive On
   ExpiresDefault "access plus 1 month" 

This config can be placed within the .htaccess file within the root of your website directory.

Sample Nginx config to enable caching with 1 month expiration period:

location / {
   expires 30d;

This config can be placed within the “server” block of your Nginx configuration file (the default is “nginx.conf”).

To keep things simple, I’ve avoided the topic of public caches on the Internet. If you would like to learn more about Apache or Nginx caching configurations and how to control public caches (using Cache-Control headers), visit these Apache¬†and Nginx web pages.

Web Performance

The Real Cost of Poor Website Performance

It has been my experience that website owners have little understanding of how website performance affects the bottom line. In light of this, I’ve pieced together a few infographics from Strangeloop Networks to illustrate some important findings regarding page load times:

Cost of Web Performance Infographic

It is incredible to see how page load times can affect revenue and traffic. Here’s a table of some of the results listed by the companies mentioned in the infographics:

Amazon 100ms Increased revenue by 1%
Mozilla 2.2 seconds 60 million more Firefox downloads per year
Shopzilla 4.8 seconds Increased revenue by 12%, page views by 25%
Yahoo 400ms Increased traffic by 9%

These numbers might not look like much, but if you’re a multi-million Rand e-commerce website owner, you may want to think again about your web performance budget! Even if you’re only running a small non-profit website, the increased traffic may be what you need to get more exposure and support.