How to reduce your WordPress CPU load without upgrading your web hosting server? The last thing you’ll ever want is a slow server which might affect your Google ranking, a constant server crash (if you’re on dedicated server) or your web hosting company shutting off your blog without warning due to excessive usage. Here are the 7 method I used to reduce my WordPress CPU load and bandwidth without upgrading to a much more expensive server.
01 – Remove Jpeg and PNG Metadata
Remove the hidden metadata in all of your jpeg images in the ‘upload’ folder. Google doesn’t rely on these metadata on ranking or for keywords, I did a simple test by inserting a unique 10 digit number into a jpeg’s metadata, then I waited for a month and did a quick search for that 10 digit number on Google Images and the result was zero.
On average, each jpeg consist of 15 to 19KB of metadata. Assuming that average jpeg is roughly 60 to 80KB in size, this translates into a saving of 20 to 30% of bandwidth, not to mention the CPU load. If your WordPress Theme comes with lots of background images, by removing the metadata will greatly affect the overall performance.
I did an experiment on www.homeless.com.my by removing all of the jpeg’s metadata in the WordPress Theme and the bandwidth usage dropped by half, same goes for the CPU load, not to mention the time it takes to load is much more faster than it previously was.
As for PNG, here is a loss-less compression which I used. Not only was the software able to remove the metadata, it did a great job at compressing and optimizing the PNG. The file size is smaller with no visible loss of image quality.
- PNG Gauntlet (free) – Loss-less compression for PNG and Gif, somewhat slow
- Stripper (free) – Remove unnecessary metadata from JPG/JPEG/JFIF & PNG files, no loss of image quality
02 – Compress Jpeg
Jpeg itself is a compressed image/format; to further compress it is to reduce the quality of the image, subsequently the size. The average jpeg size in the ‘upload’ folder is about 80KB, by removing the metadata it comes to about 60KB, and by compressing it further with this software I was able to reduce the size to 45KB on average.
- JPEGmini (USD19.99) – Possibly the best image compressor ever!
- Advanced Jpeg Compressor (shareware) – Batch compress jpeg, remove metadata and fast
Based on my test result using Advanced Jpeg Compressor with 5830 jpeg images – 259MB (Before) vs 105MB (After). That means for every 100MB the server transferred, it was able to save 150MB. This will greatly reduce the server’s load and web hosting bandwidth.
Plugin that does the optimizing job inside WordPress:
03 – Optimize your CSS
By removing unnecessary codes and line breaks, you might have the opportunity to reduce the CSS file size by 50%. Again, this translates into massive bandwidth saving due to the fact that your style.css file is downloaded every time a unique visitor visits your blog. Here is one of my favorite online tool – Online CSS Optimizer or Clean CSS.
Don’t just stop there, remove and optimize all those unwanted codes from the two most requested pages – index.php and single.php, remove line breaks, empty spaces, comments, redundant codes and many more. This will probably shave off another 10KB. This can be done automatically on the fly with 2 cache plugins:
04 – Outsource All Images via CDN
You can dramatically reduce your CPU load by hosting your WordPress Theme’s images on another server, no plugin or special software required. You don’t even have to spend much on another web hosting plan – simply upload the images to a CDN.
Some argued on the additional DNS connection required, again, based on my test with tools.pingdom.com, my site is faster than before. The best solution going forward is to use a CDN, also known as Content Distribution Network. For small blogs, here are 2 of the more affordable CDN in the market:
- Amazon CloudFront CDN (Fee depends on usage, postpaid)
- MaxCDN (Flat rate, prepaid)
- Jetpack Photon by WordPress (Free)
- CoralCDN is a free CDN, but the reliability may vary from time to time.
Read our previous article on – 5 CDN Comparison MaxCDN, Amazon CloudFront, CloudFlare, CacheFly and EdgeCast. Why use a CDN? Check out the video:
05 – Clean WordPress Options
When you activate a plugin, it leaves a small footprint in the MySQL ‘wp_options’ database. It may be a good idea to clean the WordPress Options database. WordPress Clean Options plugin’s goal is to give users an easy and safe way to get a bloated wp_options table down to a manageable size, thus improving the performance of their blog. Remember to deactivate and delete unused plugins before performing the cleaning up process.
Note: This plugin is somewhat outdated, but it still works. Remember to backup your database before performing any cleaning or removing of data.
06 – Optimize your MySQL Database
Imagine entering a library where books are scattered everywhere without proper archiving. Just like Windows, your MySQL database gets fragmented as time goes by. By optimizing (defrag) your database, WordPress is now able find the bits and pieces faster, this translates into lesser time it requires for the CPU to search and compile the information, thus more time to serve newer queries or request. If logging into your MySQL database is too troublesome, the WP-Optimize plugin does the job right inside WordPress.
07 – GZip Compression
According to Webo, by enabling Gzip compression on your blog, it will significantly increase the CPU Load while reducing the bandwidth. If you have a fast CPU, by all means go ahead. GZip has its own strength and weakness, the good thing about GZip compression is pages tend to load faster due to the smaller size, on average the the files are 60 – 75% smaller.
Smaller file size means faster serving/downloading, meaning to say your CPU have more processing power for some other stuff. I guess this is a very subjective topic. Anyway, to enable GZip in WordPress, simply insert this code into header.php, it must be above everything else, not before any other code.
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
Alternatively, you can insert this simple Gzip code into your .htaccess file
Here are three of my favorite GZip site verification tools. Each with its own uniqueness when it comes to the report, such as the speed it loads, method used and many more.
GZip compression are performed automatically by W3 Total Cache and WP Super Cache plugin.
08 – Lazy Load Plugin
Developed by Automattic, the guys behind WordPress. Lazy load images to improve page load times and server bandwidth. Images are loaded only when visible to the user. Very useful for those with lots of images.
09 – Enable the Default WordPress Object Cache
WordPress 2.0 and higher comes with a feature known as WordPress Object Cache, sadly it is not enabled by default, therefore making this feature somewhat of a mystery.
- Step 1 – Open your wp-config.php file
- Step 2 – Insert the following code
To set it’s expiration time you can add this line:
If you’re using Wp-SuperCache of W3 Total Cache, ignore the WordPress Object Cache feature. Last but not least, use a good WordPress theme, choose wisely, a well coded theme will greatly reduce the number of queries, have minimal W3C error and is Google friendly. Insert this quote to find out the number of queries for different themes:
<?php echo $wpdb->num_queries; ?>q, <?php timer_stop(1); ?>s
Test Your WordPress Speed
After optimizing, it is important to test the final outcome. There are 3 web application that does this for free. Google PageSpeed is my favorite.
Remember that speed is important but not the most important factor in ranking.