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.
- 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.
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 Theme’s Images
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 a single cent on another web hosting plan – simply upload the images to flickr. When you’re done uploading, get the url to the image and point the url address in your WordPress Theme to the image in flickr. Outsource it for free! It is like using a CDN or Amazon S3 minus the hole in your pocket.
Some argued on the additional DNS connection required, again, based on my test with tools.pingdom.com, my site is faster than before.
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.
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.
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.
Bonus : 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
- Step 3 – Create the cache directory
- Step 4 – Change the ‘cache’ folder writable permission to 755 or 777
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