How To Speed Up Your WordPress Website
Most of us are aware of the benefits of speeding up your website. The quicker a page loads, the more time a visitor is likely spend on your site, and if they stay longer on your site they are more likely to make you money (purchasing a product, clicking on an affiliate link etc). Pages which are quick to load also use less bandwidth and since major search engines like Google take speed into account when ranking your site, you should see an increase in traffic too indirectly.
In this article I will be showing you how even small changes to your WordPress powered website can make a huge difference to your sites performance. In addition to tips and tricks and good practices for speeding your website up, I have also reviewed a lot of useful WordPress plugins that improve your website in a number of ways. Please note, I have tested all of the plugins mentioned in this review in my test area to make sure that they work with the latest version of WordPress. Unfortunately, it just wasn’t practical for me to test each plugin over a number of weeks to monitor their performance therefore I cannot say which plugin is better when it comes to speeding up your site. What I have done is briefly explain what each plugin can do and spoke a little about what options you have with the plugin.
I’m sure you’ll find this article useful. If for any reason you are unsure about any advice given or plugin listed in this article, please let me know and I’ll do my best to help :)
Good Practices, Tips and Tricks
By adhering to good practices when setting your WordPress site up, you can improve your websites performance by a great deal.
Fast Reliable Hosting
It goes without saying that the speed and reliability of your hosting package will play a big part in how fast your pages can be viewed by visitors. If your hosting can’t handle the traffic you are receiving many visitors will suffer from poor loading times or may not be able to visit your site at all.
Most bloggers start off with the basic (read cheapest!) package. There is nothing wrong with this though it is important to upgrade your host as your site grows.
A Well Designed WordPress Theme
A poorly coded them can really slow down your page. Try and make sure the theme you are using was designed well using CSS and not tables and ensure it doesn’t rely heavily on images either. For example, if your website design uses 300kb of images for the border that wraps around your site, that’s 300kb of data that needs to be loaded by every single visitor every time they visit your site.
You should also validate your design with the W3C Markup Validation Service. I used to be a tiny bit sceptical to the benefits of ensuring your code is 100% correct as most browsers can auto-correct your code. It has been found however that Google Prefers W3C Valid HTML & CSS and having a page with no validation errors can improve your ranking over other websites. As such, I believe it is worthwhile to validate your design and remove any errors that you may find within your code. I recommend doing this at least once a month as it’s really easy to modify your site and forget to add a quotation mark or close your line of HTML.
If you have a lot of plugins installed you may find it difficult to validate your page without errors, as many plugins insert code onto your page that is not W3C compliant. I recently spent about 3 hours validating the code on WP Mods. It picked up a few basic errors on my part though the majority of errors were generated by 4 or 5 plugins I have installed. To remove these errors I had to manually edit the plugin core files to address these problems. It’s a bit of a pin but if it speeds up your page and improves your search engine ranking, it’s probably worth it.
Images are obviously one of the biggest factors that contribute to the speed a website page. There are some things you can do to increase your website performance and reduce your bandwith.
- Reduce/Compress image sizes before you upload them – There’s no need to upload a 2,000 pixel image if your content area is only 600 pixels in width. By reducing the size of an image and reducing the quality, pages will load much much quicker.
- Host images on a separate domain – Most browsers allow two to four connections when downloading a page from a server. If you place a lot of images in your content, you could speed up your page by hosting your images on a separate domain or a sub domain (e.g. images.yoursite.com). You could also use a service such as Flikr instead.
- Prevent hotlinking – Hotlinking increases bandwidth by quite a large factor. If you have a lot of leechers you may start to see a drop in performance from your host therefore it’s worthwhile editing your htaccess file to prevent hotlinking.
With regards to hotlinking, I’ve found that it can be difficult to implement as most methods also block RSS services from linking to your images. Allowing your readers to read your content via an RSS reader is important therefore it is counter-productive to stop being shown to legitimate readers.
Optimise The WordPress Database
By optimising your MySQL datasbase. To do this all you need to do is select all of your WordPress tables via phpMyAdmin and choose the ‘optimize tables’ option.
One plugin I recommend installing to do this is Portable phpMyAdmin as it allows you to access phpMyAdmin directly from your WordPress admin area. If the thought of modifying your WordPress database manually scares you I recommend installing Joost De Valks plugin Optimize DB, which will optimise your tables for you.
Remove Plugins You Don’t Use
If, like me, you install plugins quite frequently, you may find that many of the plugins that are activated are no longer being used. It’s worthwhile removing plugins that are not required.
Additionally, I think it is good to get in the habit to only use a plugin when absolutely necessary. You should always try and hard code a solution where you can rather than use a plugin.
Use Excerpts And Reduce The Number Of Posts On The Home Page
One of the most important pages to optimise is the home page as it’s the first page a lot of your visitors see. In WordPress you can set the number of posts to display. By reducing the number of posts that are shown on the home page and in archives you can reduce the time it takes to load the page. To reduce the loading time even more, ensure that you use excerpts instead of full articles.
Break Up Comment And Pages
The Page-Link tag is a feature that is very useful if you have a long article, particularly if the article has a lot of images. By inserting < !–nextpage–> into your article you can split it into several pages.
If an article has a lot of comments, you can improve the loading time of the page by splitting the comments into different pages. You can do this in the ‘Other comment settings’ area of www.yoursite.com/wp-admin/options-discussion.php
Enabling the WordPress Object Cache
WordPress has a built in function called WP_Object_Cache that allows you to cache time draining database queries (this replaced the older WP_CACHE function). By enabling it you can save WordPress from having to reload the same queries over and over again.
Caching is one of the best ways to improve the speed of your website. The best way to utilise the feature is using one of the many cache plugins that are available. :)
WordPress Cache Plugins
Caching improves the speed of a WordPress website by saving your pages and files and storing them in a static file. When a visitor visits a page your server sends a request directly to the file rather than loading the PHP file and building the page from the database. This saves a huge amount of time and as result, many cache plugins promise to speed up your website by at least 10 times.
Below is a list of some of the most popular cache plugins for WordPress. I recommend only using one plugin that caches your files because as these plugins are trying to do the same thing, they will conflict with each other and most likely cause an error.
One plugin that I do recommend installing with a caching plugin is Cache Time. The plugin allows you to call a function anywhere in your templates (e.g. footer.php) and display the time the page was cached. Useful if you are unsure whether the cached page is up to date.
W3 Total Cache
The developers promise that after installing the plugin your site will be at least 10 times quicker. I’ve only recently installed the plugin at WP Mods. Although the home page still seems to be taking a very slow 6 seconds, older posts and pages are sometimes being loaded in around 1.5 seconds. Not only will this make the site quicker to read for visitors, it will also save me a lot of bandwidth.
The plugin is compatible with shared hosting and dedicated services and has a huge amount of options including mobile support and caching of feeds and search results pages. Don’t let the huge number of options daunt you, the plugin was designed to work perfectly on its default setting.
WP Super Cache
WP Super Cache promises to show static HTML files to 99% of your visitors. It’s quite upfront about the fact that in day to day use, most visitors will not see a huge difference when loading your website however the developers note that you will see huge benefits if your server is underpowered or you are experiencing a large amount of traffic.
The plugin features a lot of useful customisation options including the ability to cache plugins in a special folder so that they are loaded before other plugins.
WP Simple Cache
A simple plugin that creates static HTML files of your content to speed up your page loading. Other than setting the cached page timeout value and the frequency to autoclean the cache, there is no option to customise how it runs (which won’t necessarily be a bad thing for many of you).
Reviewed a few weeks ago by Briley Kenney, WP-Cache hasn’t been updated for a number of years though it seemed to work pretty well when I tested it in my test area (and loaded my test page in under a second).
The plugin includes an option to exclude certain files/pages from being cached too.
WP-Cache is a simple plugin but it appears to work very well. One worth trying out :)
Hyper Cache Extended
I had a slight problem during installation. After installing I got the message ‘Hyper Cache was not able to create files in the folder “cache” in its installation dir. Make it writable (eg. chmod 777)’; however adding a writable cache folder in the Hyper Cache Extended plugin folder and another one in its parent folder, I couldn’t get it to work.
The plugin is updated regularly and many users have confirmed that it is working correctly therefore it is likely an issue with my settings (Mapto has also encouraged users to email him directly for help if they have any problems using the plugin).
I was disappointed I couldn’t get the plugin setup correctly to test as it seems like a good plugin.
A feature rich cache plugin from theme developers PrimoThemes, Quick Cache has a lot of cool options such as not showing cached pages to logged in users. This would be useful for registered members who want to see up to date comments.
It also has a useful inbuilt debugging system that alerts you to any problems with the cache on a given page.
Quick Cache: Download
WP File Cache
WP File Cache works a little differently from other plugins. Instead of caching the full page, it caches the information that WordPress asks it to cache. Due to this, the plugin will not improve performance as much as WP Super Cache or W3 Total Cache, however it will speed up your website and allow it to remain dynamic.
WP File Cache: Download
DB Cache Reloaded Fix
DB Cache Reloaded Fix is a modified version of DB Cache Reloaded that claims to be ‘the fastest cache engine for WordPress’. The plugin caches every database query which apparently makes it faster and uses less disk space for caching.
It seemed to work well in my test area so I’m tempted to try it out on WP Mods in the future to see if it lives up to its claims.
DB Cache Reloaded Fix: Download
Other cache plugins you may come across:
- WP Plugin Cache – A plugin that provides a file caching facility for any other plugin that wants to integrate with it. You would only have to use this if another plugin you used advised that it worked in conjunction with it.
- WP Widget Cache – Caches the content of your widgets to speed up the performance of your website. Works well with WP-Cache or WP Super Cache.
Reducing Image Load
The plugins below will help you speed up the loading times of your page, either by hosting your image on a sub domain or by reducing the size of the uploaded image.
WP Parallel Loading System
The plugin was designed to reduce the load for image intensive websites. Standard HTTP v1.1 requests only allow 2 connections at the same time from the same domain. WP Parallel Loading System lets you use virtual connections via subdomains to increase the number of connections. It also optimises your images in order to improve performance.
WP Parallel Loading System: Download
Similar to WP Parallel Loading System, WP ImageHost allows you to host your blog post images on a sub domain, thus speeding up the time it takes for a page to load.
WP ImageHost : Download
Automatically reduces the size of uploaded images. To do this is optimises JPEG compression, strips meta data from JPEGs and converts GIF image files to the PNG format.
WP Smush.it: Download
Content is not always loaded in the fastest or most efficient way. The plugins below try and resolve this issue by compressing code or moving important files to the one location so that multiple connection requests are reduced.
HeadJS Loader: Download
JS & CSS Script Optimizer
CSS And Script Files Aggregation
CSS And Script Files Aggregation: Download
WP Minify: Download
Scripts Gzip: Download
A useful plugin that removes unnecessary white space from HTML documents. Works best with a cache plugin.
Removes whitespace and compresses the HTML output of a web page in order to improve the pad loading speed.
External Files Optimizer
External Files Optimizer: Download
More WordPress Plugins That Improve Your Websites Speed
blah blah blah
WP Avoid Slow
An interesting plugin that uses .htaccess tricks to boost your websites performance. In particular, Expires Header and Entity tags .
Expires Header caches a lot of http request information so that is loaded the first time a visitor views a page on your website so that loading subsequent pages on your website is much quicker. WP Avoid Slow also configures entity tags. Their explanation is much better than mine every could be, so here’s how they explain it:
Entity tags (ETags) are a mechanism web servers and the browser use to determine whether a component in the browser’s cache matches one on the origin server. Since ETags are typically constructed using attributes that make them unique to a specific server hosting a site, the tags will not match when a browser gets the original component from one server and later tries to validate that component on a different server.
WP Avoid Slow Configure Etags helping browsers to validate the component !!
WP Avoid Slow: Download
WordPress Gzip Compression
Enables Gzip Compression if the visitors browser can use it. This speeds up your website and reduces bandwidth too.
WordPress Gzip Compression: Download
A useful plugin that allows you to select the order in which plugins are loaded. It also allows you to disable plugins on certain plugins and posts.
Plugin Organizer: Download
A Quick Summary About Speeding Up Your WordPress Website
As you can see, there are a lot of ways to improve the performance of your website. I hope you all understand the benefits of speeding of your website performance and find the time to optimise your own site over the next few weeks. You don’t have to spend a lot of time doing this.
Your websites performance could be greatly improved by just adjusting your WordPress settings accordingly, validating your code so that it is W3C compliant, installing a good cache plugin such as W3 Total Cache and adding Gzip Compression to your site.
Once again, if you are unsure about any aspect of this article or simply want some advice about how to improve your websites performance, please leave a comment and I will do my best to help you where I can :)