Website Performance Optimization

Current setup is hosted at A2 Hosting using their Turbo Package which offers a lot of cool advantages like:

  • Memcache on new servers with reduced customer load
  • All solid state drives with RAID 10
  • Enhanced Web Server performance over Apache
  • Support for Let’s Encrypt free SSL
  • Support for Cloudflare account

To sign-up for A2 Hosting use this link, you get a discount and I get a referral credit.

Pingdom Summary

Calculating performance by determining how much more could be accomplished in the same amount of time, which uses the formula ‘OLD/NEW – 1’ there is a staggering 9564% increase (i.e. one can do 95.64 times more in the same time). Oh, and that load was from Melbourne Australia and my host and I are in the Eastern U.S.  To confirm my math, I used 11.5 seconds for the original time and the 119ms shown below for my new time, although my average time from Pingdom is closer to about 400ms.

Old Configuration

I did not, and still do not, need a ton of performance for my personal site.  However, it came to my attention that I was paying a bit much for my prior hosting provider that I had been with for 10 years.

The SSL, that I don’t really need either, was the expense that made me shop to find support for Let’s Encrypt.

My site wasn’t particularly clunky, but there were times when I would run a page speed test and see upwards of 6 seconds (9-12 with SSL), but there was a lot of un-optimized content.

New Configuration

The migration to A2 brought the performance potentials into focus for me, I had not consolidated or minified CSS or images or ever considered reordering my JS and CSS files or loading them dynamically based on the content being served.

After researching plug-ins, customizing my theme, and a brutal amount of testing, I eventually found some good combinations.

I admit that achieving performance on this site has become a bit of an obsession for me, but I believe I have hit a milestone.

Pingdom File Requests

Pingdom 119ms files

At the time of this test there was some caching cleanup to do still but I was able to replace the search.png by installing font awesome locally.  Originally it was over 200k and I have since tried to keep my header images below 50k so four times that for a font seems fairly bloated.  I found an editor and was able to remove the characters I do not intend to use and now it loads in under 6k.  Currently the woff2 file is loading even though i emptied it to 0k, but i have to find the call to that and remove it which should bring me down to 13 requests.

One other point to mention, the theme I am using has some great menu features that cannot handle js compression so I have had to work file by file and alter the order to test how to best consolidate them.  I am betting that in the future this can become better which would push my requests under 10 and ultimately I want my load time to be under 100ms.

Optimization Shortlist

The changes support not only performance but also availability and security.

  • Host change to A2
    • Solid State HDD
    • Raid 10
  • Memory based caching
  • Disk based caching
  • Database caching
  • Object caching
  • Page caching
  • CSS and JS minification, thinning, and colsolidation
  • Browser caching
  • Image size optimization
  • Local font installation
  • Font Awesome to replace images
    • installed locally
    • edited to remove unneeded characters
  • AMP for mobile optimization
  • Cloudflare ‘always on’ and multi-tenant site propagation
  • Pingdom also reports on availability