Even people like me who are old enough to remember the great sound of a dial-up modem (when I listen to that I still feel excited!) know that there is a need for speed on the internet.
The above video on speeding up WordPress is part of a course I’m doing on Udemy about blogging, optimization, WordPress, social media and relationships. Please check out my other course on Udemy: Creating a Business Website with a Responsive Design.
With wonderful high speed broadband we now get impatient if a page takes time to load, and sites that leave us starring at a blank screen for more than a second will have the back button hit on them faster than you can say “snail”.
Google has made page loading times an increasingly important ranking factor recently.
So, if you have a slow site no one’s going to hang around to consume your content and no one’s going to find you on Google either. Put simply, page loading times are of paramount importance.
The need for speed is something we’ll always be thinking about as website owners. But I thought I’d write about a few of the biggest wins I’ve had over the years in the endless struggle against slowness. Watch the video above which gives you a practical demonstration of the advice below, and then … tell me what you think!
Check your site with Google PageSpeed
Google PageSpeed is a suite of tools that can help you optimise the performance of your website. I use the Chrome extension (extensions for other browsers are also available).
Select a page of your website, open Developer Tools (Cmd-Opt-I; Ctrl-Shift-I), and click ANALYZE and the PageSpeed tool will give you a score out of 100 and make suggestions about how to improve loading times.
If you’re not sure how to implement any of the suggestions – particularly the maximum and medium priority ones – then contact your host and see if they can help you.
However, the score may well improve after you implement the following…
Load a caching and/or minify plugin
One of the best things you can do to speed up a WordPress site is to load a caching plugin.
These caching plugins store a special cached version of your site and present it to visitors immediately without performing a number of database queries as is normally the way a website would be served.
These plugins need to be configured correctly and, again, you should consult your host on the best plugin to use as well as the correct configuration. Two of the best caching plugins for WordPress are W3 Total Cache and WP Super Cache.
Another important point to remember with caching plugins is that the special cached version of the site may not be the most up-to-date and, especially when you make small development tweaks, it may be necessary to delete the cache to ensure the development tweak is affected.
I’ve also seen great results from WP Minify. Please see the video for more information on these.
Cut down on the amount of plugins you have
Make sure you don’t have loads of plugins activated. 15 should be the absolute maximum.
- Deactivate unnecessary plugins
- Delete deactivated plugins
- Check on the WordPress Plugin Directory. Are you using plugins that haven’t been updated recently or have a poor rating.
A great way to check to see if you have any “problem plugins” loaded is with the P3 (Plugin Performance Profiler) plugin. It’s another plugin, I’m afraid! But all you have to do is activate it, run a scan and it’ll quickly show you which plugins are slowing down your site the most. (After that you can deactivate it and delete it, if you wish.)
Also, you can change the order that your plugins are loaded and/or selectively disable plugins by any post type or URL with the Plugin Organizer plugin. A plugin to organize plugins – love it!
Use a Content Delivery Network (CDN)
A Content Delivery Network (CDN) stores your site’s files in various locations around the world and it will serve your content via your host from the nearest server to your visitor. So visitors from Europe will receive content from Europe; visitors from Asia will receive content from there, etc.
I would recommend MaxCDN. CDNs need to be configured in tandem with your caching plugin. MaxCDN (affiliate link) will give you adequate directions on how to do this with W3 Total Cache and SuperCache.
Use a good host
Sometimes you can make all the tweaks you like to your WordPress installation but, if your host stinks, these tweaks won’t do you any good.
This site is on a great UK host I recommend called Vidahost (affiliate link). And there are some great, recommended VPS hosts and some great shared hosting companies.
Obviously dedicated hosts will be generally faster than VPSs, which should be faster than shared hosts. However, this is not always the case. You can be pleasantly surprised with a good shared host although that may be down to luck as you’ve been put on a relatively empty server. If you’re serious about blogging then go for a VPS or dedicated.
Optimize your database
As part of general WordPress good housekeeping, you should optimize your database every month or so, especially if your site has been going for a few years and has loads of posts and comments.
You can use plugins like WP-DB Manager to delete unneeded post revisions, unapproved and spam comments, etc., and repair your database with one click.
Use a good theme
There may be some badly written themes out there. You are much better off using one of the well-reviewed premium themes out there. I always recommend Genesis because it’s superbly coded and well-optimized.
But there are loads of other good themes out there. And you can’t go wrong with any of the default WordPress themes, like the amazing and responsive Twenty Twelve.
Optimize your images
The images on your site are likely to be the files with the biggest sizes of all. So it makes sense to optimize them as much as possible. Photos like the ones above should be saved as well-optimized JPGs. Use PNG-8 and GIF for flat color web graphics. And only use PNG-24 when you absolutely have to – when something has to be particularly well cut-out, usually.
When optimizing JPGs, I usually put the quality at around 40-55% depending on the image.
And, always make the image size the same as the size it’s displayed on the page. Never cram a larger image into a smaller size on the page – that’s just wasteful!
Use image sprites
An image sprite is a collection of images put together on a single image. What’s the point of creating a single image sprite? A web page may have many small images, for example social media icons. All those images generate multiple server requests and all have to be downloaded individually whereas an image sprite is only requested and downloaded once thus speeding up the page load time.
On my site, look at the top left hand corner, you’ll see a row of images which are icons of the various social media sites (Twitter, Facebook, etc.) If you hover over any of them they go from black and white to color. Neat, eh? To create this, please see my post on creating social media profile buttons – HTML and CSS.
Above is the image sprite used for the profile buttons.
And above is another one I’ve made for another site. If you want to use any of these, get in touch. I have the HTML and CSS.
Keep an eye on your HTML
Another great way to “keep an eye on your site” is to make sure a particular page’s HTML validates. Go to the W3C Markup Validation service and check a blog post or your home page.
If the page is littered with HTML errors then it might be time to pick a new theme. See if you can see where the errors are coming from – it may be you are using a poorly coded plugin and there maybe a better one you could choose.
A few HTML errors may not slow you down but bad HTML, in the very worst of cases, could cause your site to stick or hang on some browsers.
Use post excerpts on your archive pages
This is a blogging, SEO, usability and speed related piece of advice!
An archive page is either your blog’s traditional home page with the last 10 posts displayed, or a category page, an author page, even a search results page. A page which lists multiple posts.
It is best to have this page display only extracts of the posts rather than the full post with all the images, movies or anything else it may contain.
This seems like pretty basic advice for any savvy blogger but I’m constantly surprised by the amount of times I see full posts on archive pages.
Every theme handles this differently. For some themes you may have to edit the theme’s PHP files to show excerpts on the archive pages. On the Genesis theme framework, under Theme Settings > Content Archives, I choose “Display post excerpts”.
You can do it
No matter if your site is one month, one year or one decade old, you’ll always be trying to get your page loading times down.
I hope you will find one or more of the above suggestions helpful. If you have any other suggestions please leave them in the comments. Let’s talk!
Further testing
Google has a speed tracking service tacked onto Google Analytics you can set it up here for your site. This enables you to see how long it take for different pages to load for different users. You can segment by browser type, country and all the other usual categories you get with Analytics. More about Google Analytics site loading tracking here by Matt Fox.
Many thanks to Leora Wenger for her advice to use the P3 plugin to monitor your plugin performance. And many thanks to David Waumsley for his advise about the Plugin Organizer.
There are some links that are affiliate links in this article. If purchases are made through some of these links, I will receive a commission although the price to the purchaser will be the same. If you’re not happy with this feel free to purchase the product via a Google search. 🙂
David Waumsley says
Great round up of all the important stuff Rob
I’ve found WP Smush.it is a good little plugin to further take down images sizes without quality loss. It’s one you can lose after use.
Also I have started testing Plugin Organizer. I used to manually deregistered stylesheet and javascript added by some plugins. For example making a contact form style sheets only load on the contact page. This does it for me, but it also orders the way plugins load.
I’m experimenting with this, but I’m presuming that if the cache plugin is first to load it will cut down the “time to first byte” created by the other plugins (?).
I love the P3 plugin – see Godaddy aint all that bad.
Rob Cubbon says
Hello David, excellent advice from you here. I feel like I should re-write the whole article now 😉 I will add a few of these in.
I’ve heard good things about Smush.it – do you mean the website or the WP plugin?
Plugin Organizer looks fab – I’ll add that.
Not sure about your “time to first byte” question.
David Waumsley says
Thanks Rob, I think you got it covered. The whole speed think can get overwhelming.
I meant the Smush.it plugin, but actually it’s sometimes is a bit buggy and I have done it manually on the site. Someone new has just taken over updating that plugin.
Up till recently I would have suggested Cloudflare a free (with premium options) CDN with CSS/HTML/JS minifier. I wont bore you with the details but only on a few sites did it really help.
In many cases it boosted my speed score but actually slowed the site down. It’s main flaw is you have to point your DNS to them so can have two set of hosting downtime and other confusions with emails..
I liked MAXCDN. Presently I’m given Amazon CloudFront a try to see if it is as good (maybe not as it does not gzip – but that’s another story!)
Rob Cubbon says
Hey David, yes, an endless battle between adding functionality (bells, whistles) and the need for speed.
I used to use Cloudflare as well. I think it didn’t work one day and a few sites were down for a while so I ditched it. I agree it was confusing not knowing what was coming from where.
It would be interesting to see what you think of Amazon CloudFront.
GregMurch says
MY favorite Plugins are:
Yoast SEO,
Yoast News,
Yoast Video SEO,
Yoast Google Analytics.
W3 Total Cache,
Jetpack
If moving an existing site over to word press i use the Broken link checker by Janis Elsts then remove when done.
Then a small one WP remote to monitor clients sites for updates. and remotely install with 1 click.
I know there is a lot from Yoast, but they are simple to set up and work and as all from one developer no conflicts, and easy to get support if there are any issues.
My next to look at is Yoast Local SEO and this links with the Google local that is now being pushed.
The W3 Total Cache takes a bit of playing with but has some fantastic features for speeding up the site as mentioned above.
A great article.
David Waumsley says
Hello Greg,
I recently discovered WP remote. I thought it was fantastic until I realised it was turning off the plugins after updating them. Lots of others have reported this so until this is fixed (for everyone) it remains more of a problem than a solution.
Just a little warning for anyone planning to try it.
GregMurch says
Hi David,
Thanks for this,
I have it installed on 45 sites currently.
I know there are some other plugins that do the same functionality as this.
http://infinitewp.com/ and http://managewp.com/ or http://worpit.com/
For a freelance web designer managing multiple sites a review of all the services would be a good idea…
Rob Cubbon says
So really interesting ideas here, Greg. I, too, would really like to know the best solution for managing multiple WordPress sites.
Paul G. says
Hey Rob, and the rest of the readers…
I’m part of the team behind Worpit.com and just wanted to let you know that we have a 30 day unlimited trial at the moment so it’s easy to try it out and see how it would help you manage your sites.
We have tools built into Worpit for optimising databases and cleaning out spam and drafts etc. as well as tools that set certain security options – there’s lots of things to check out.
If you have any questions, please feel free to drop me a line any time, or grab me on the chat (on the website).
Cheers,
Paul.
Rob Cubbon says
Thanks for letting us know, Paul, this is a interesting offer I hope you get a lot of interest from this article.
Matt Fox says
Rob, great roundup of tips. Thank you for the mention, too.
Moving to a good host was my best decision to date. I use WPEngine. It eliminated the need for cache & security plugins since its all built into their hosting. Less headache & more speed.
Rob Cubbon says
Matt, thanks, WPEngine does look interesting. Great idea for a host.
Mark Hallam says
Great job Rob. All the best to you!
Rob Cubbon says
All the best to you, Mark.
Michael King says
Rob, Wow! A great column [oops, betraying my age!], er.. post!! I’ll certainly mention this in my next newsletter. Thank you for all the information.
Rob Cubbon says
Haha, well, it is a column, Michael! Glad you liked it. 🙂
Matt Ogborne says
Howdy Rob,
Fantastic article!
W3 was very helpful and adding APC as a cache system also helped loads. Memcache(d) is also worth looking at if the site gets massive volumes and you need to share the load (and cache) over multiple servers (if you’re using shared hosting, ask for APC to be enabled, it’s faster than Mencached).
I’ve just gone through two months or more of drilling down and weeding out the slow stuff. Probably went a lot deeper than most (I admit it, speed is important to me), checking on SQL queries made, reworking/coding widgets & plugins, changing themes completely (nice responsive site now) and adding Varnish cache as a reverse proxy and will be moving away from Apache to use nginx instead.
The net result so far has I’ve gone from a 8-10 second site (after doing most of the above) to a sub 3 second site and the stats show it here http://www.webpagetest.org/result/130418_G3_YQF/ (that red line I know about and are fixing currently, somehow I feel ashamed of it). Sprites are next, but I’m not too hot with them, will be by the time I’m finished though 😀
Probably overkill for 95% of websites. All the above suggestions in your article will help massively and are all easy wins, however to go one stage further as I’ve found is not easy and needs a boat load of work to 🙂
Matt
Rob Cubbon says
Hey Matt, I was going to write to you before doing this article actually because I know you’re a real speed freak! You really helped me with the speed of my site years back and I still use WP Minify because of your original suggestion. So, thanks a million for all your help in the past, Matt.
Really great for you to explain to us the distinction between APC and Memcached.
I’ve also had experience with Nginx hosts as well and they do seem very fast.
I remember us using webpagetest.org to test these wins before as well!
Louise Myers says
Another great post, Rob! I definitely need to work on MOST of these! Question – how do you know if you should switch hosts? I’ve been happy with HostGator and their support – how do I know if another host would be faster?
Rob Cubbon says
That’s a good question, Louise. It’s very difficult to say. Speed is a very difficult thing to quantify – it’s different depending on where you access the site from. If you spent a lot of money on a dedicated host then I’m sure you’d notice a difference. I would say your site loads OK at the moment. There are some recommended VPS hosts here and Matt Fox above recommends WPEngine.
Lorenzo C. says
Check out GTMetrix as well. Will run a quick test on your site and return recommendations for speeding it up. Pulls information from both Google Page Speed and YSlow.
Rob Cubbon says
Thanks, Lorenzo, GTMetrix is another great addition to this discussion.
Parma says
I recommend these tools for maximum image compression
http://compressjpg.com
http://compresspng.com
Rob Cubbon says
Thanks for that, Parma, I wasn’t aware of those services.
Adrienne says
Hey Rob,
Wanted to stop by and check out your blog.
I love this post and it’s something I had to deal with late last year when I started having some issues with my database. Boy did I learn a lot.
I use GTMetrix to check my load time and I’m pretty much doing everything you suggest here minus maybe a few. I am using CloudFlare instead of the caching plug-in but mainly because my hosting service recommended it and I really hate those plug-ins. To many settings I don’t understand ya know.
My blog is improving I must admit but I still have some work to do. Thanks for these tips though, I’ve learned a few new suggestions here. Huh, I have more work to do it looks like.
Great to meet you and enjoy your week.
~Adrienne
Rob Cubbon says
Great to see you here, Adrienne. The caching plugin choice and settings does often depend on the host’s set up and getting the correct information from them about this can be challenging. I find that perseverance helps but sometimes is not sufficient.
A helpful host can make a big difference. Best of luck and enjoy your week, too.
Astro Gremlin says
Terrific round-up of speed tweaks, Rob. Concur that SmushIt is great for reducing photos. It actually goes to the website to do its thing and sometimes that’s down or acting funny, but it’s been working great lately. Takes junk out of photos that isn’t needed.
I’ve become a big fan of the QuickCache free plugin — loads HTMl first so the reader has something to look at. The speed checkers differ on load time but give good scores on “first byte” and HTML loading speed. I run so much junk on my site it’s ridiculous and QuickCache loads slow stuff like aff links etc. later.
Just tried the WP Minify plug-in with fine results. I did gzip and sprites manually. P3 really “tattles” on the 10% of plug-ins taking 90% of the time (I wrote a post on it). Still toying with the idea of CDN or cloud — it’s currently free from my service provider but it makes me nervous for some reason. All your other picks are “must have” plug-ins that not everyone knows about. Super list.
Rob Cubbon says
Hello, Mr Gremlin, lovely to see you here again. Thanks for your valuable input again. P3 is really great at spotting problem plugins.
David Waumsley says
Hi Rob
I don’t know if you saw this, but there was a vulnerability with WP SUPER CACHE AND W3 TOTAL CACHE just recently. Here is more info.
http://wpdaily.co/security-alert-caching/
Rob Cubbon says
Thank you so much, David. I’ve just updated them all. Scary! Good place to leave this message! Hope you’re well.
Fasil says
Beautiful post Rob. I have learned many new things…I have never heard about Content Delivery Network(CDN). Thanks!
And David thanks for the alert!
Rob Cubbon says
Definitely look into CDNs, Fasil. Thanks.
Trish B says
Hi Rob,
Thanks for a very helpful post on the need for speed…in fact all your posts are extremely helpful and have assisted me hugely in fine tuning! I use cloudflare, as my hosts installed it in my CPanel options I just added my site and did not need to update the DNS. I have not noticed any increase in speed from my end though. Plugins like smushit and Regenarate Thumbnails are great to use and then disable after cleanup.
By the way, I can still remember getting up early on cold dark winter mornings listening to the dial-up modem go through its thrilling routine of squeaks and shrieks and then, accessing the mornings emails via…DOS!! 😉
Rob Cubbon says
Hey Trish, great that you’ve found this post useful as well as some of the other ones. 🙂 Good to hear your vote for SmushIt and Regenerate Thumbnails.
Good to hear we’ve both got good (?) memories of the old dial modem sound. 🙂
George says
Great lesson! I will subscribe to the course, no doubt!
Rob Cubbon says
Thank you, George, I’ll let you know when it’s out.