So my buddy Marius messages me and he’s like: “Hey, can I hire you to speed up my WordPress website?”
And I was like:
“Dude… Just do A, B, and C, and I’m pretty sure you’ll see a huge performance boost.”
A few days passed and he said:
“The speed tips you gave me worked perfectly.”
So today, I’m going to show you how to speed up your WordPress site with three simple steps, and take your site speed from something like this… to this.
Google has used site speed as a ranking signal for desktop searches since 2010.
And as of 2018, page speed became a ranking factor for mobile searches too.
And even though speed improvements will only affect a small percentage of slow websites, faster page load times lead to better user experience and ultimately, more revenue.
In fact, a study by Google shows that as page load time goes up, bounce rate rises with it.
Now, there are numerous reasons why your website might load slowly.
But the most common reasons that I’ve seen are due to slow connectivity, caching, page size, and sometimes more technical reasons like render-blocking JS.
But if you’re anything like Marius, who’s not exactly the most technical person, then the three steps that I’m about to show you should help you get better performance from your site.
Now, before we get started, it’s important to note that the things I did for this site won’t necessarily translate perfectly to your site.
There are tons of things to consider when it comes to WordPress site speed like your theme’s code, specific plugins you might be using, server configuration, image file sizes, and more.
So as we go through the tutorial, I’ll try and explain the more technical reasons behind poor performance, so you can hopefully diagnose further issues yourself.
Alright, so let me give you a background on the website we’ll be optimizing and we’ll start with some benchmark speeds.
This is a brand new affiliate site built on WordPress using the free WP Astra Theme.
He’s activated seven plugins, many of which will contribute to page load time in big and small ways.
Now, to keep things simple, I’ve run a single post, which has text, images, and a video through three page-speed tools.
PageSpeed Insights shows a mobile score of 45 and a desktop score of 79.
Pingdom shows a load time of 1.72 seconds, page size of 1.7mb, and 63 requests.
And GTMetrix, fully loaded in 4.3 seconds with a page size of 1.55 megabytes and 61 requests.
Now, since these tools only allow you to view one page at a time, I ran a full crawl using Ahrefs’ Site Audit tool.
And if we look in Page Explorer, you’ll see there were a total of 23 pages with a load time of 1 second or longer, which is basically all of the site’s pages.
So there’s definitely some room for improvements.
So the first thing we did was to switch DNS providers to Cloudflare’s free DNS service.
Now, in order to understand why we used Cloudflare, you need to understand how the web works, at least at an elementary level.
Websites are just files on a computer that are made accessible through the Internet.
Now, each device that’s connected to the Internet has an IP address, including the server that hosts your website.
So if your server is located in Los Angeles, California, and your visitor is in Las Vegas, these two IP addresses need to create a connection in order to download the file contents to the device.
Now, IP addresses are tough to memorize and I doubt many people would key in an address like this to visit your site.
That’s where DNS comes into play.
DNS stands for Domain Name System.
And it’s often referred to as the “phone book of the world wide web.”
In short, DNS maps domain names to IP addresses so people can type in a domain name to visit a website.
But the thing with this is that when someone types in the domain name in their browser, a DNS lookup occurs to find the IP address of the server.
So that takes time.
And usually, free DNS providers from your domain registrar are usually slow to respond, creating slower page load times.
Cloudflare’s DNS on the other hand is pretty darn fast, considering it’s free.
But again, your mileage may vary depending on the DNS provider, you’re currently using.
So to set this up, sign up for a Cloudflare account and then click Add a site.
Enter your domain name, select and confirm your plan, and after a few seconds, Cloudflare will give you a chance to review your DNS records.
Click Continue and you’ll be asked to change your nameservers, which is something you’d need to do with your domain registrar.
Boom! Step one is done.
The next thing we did was purchase and install the WP Rocket plugin.
WP Rocket is an all-in-one site speed optimization plugin for WordPress.
And they make it super-simple to make technical optimizations even if you have no clue what you’re doing.
The plugin handles common page-speed optimizations like caching, preloading, compression, and lazy loads images to name a few.
After activating the plugin, you can access the WP Rocket settings from the top navigation bar.
Alright, so let’s go through some of the important settings starting with caching.
If you’re unfamiliar with caching, it’s basically a way to temporarily store copies of files, so it can be delivered to visitors in a more efficient way.
And because this site is a basic blog that’s responsive, I enabled caching for mobile devices.
Next is file optimization, which is where you’ll spend the majority of our time.
For the Basic Settings, I chose to minify HTML and optimize Google Fonts.
Minification just removes whitespace and comments from code, which will reduce file size.
And smaller files load faster than larger ones.
I also chose to optimize Google Fonts since the theme uses them.
The next section is about optimizing CSS files.
Again, I minified CSS files and also chose to combine them.
You already understand the benefits of minification, so let’s touch on combining files.
WordPress sites often include multiple CSS files.
Some will be for themes, others for plugins, and you might have added some custom ones too.
Now, whether you choose to activate this option or not will mostly depend on how your server delivers the files.
Generally speaking, your files will be loaded either using HTTP 1.1 or HTTP 2.
With 1.1, your files will be loaded consecutively, meaning, one file needs to fully load before the next one starts loading.
So combining your CSS scripts can help reduce the load time because fewer CSS files will need to be loaded.
Now, with HTTP 2, the files can load concurrently.
Meaning, if you have multiple CSS files, they can begin loading at the same time, so combining them won’t necessarily be as impactful.
To see if your site uses HTTP 2, you can use Key CDN’s tester and key in your URL.
The final option we enabled is to optimize CSS delivery.
Basically, this option will generate CSS needed for content above the fold and asynchronously load other CSS files so they don’t block the rendering process.
Now, these concepts can be quite technical so I won’t expand on these but in general, these are page speed optimization best practices.
So first, I removed jQuery Migrate, which is a file that’s been added to WordPress since version 3.6.
Now, since there weren’t any issues with jQuery for this theme or any plugins, I chose to disable it as there’s no point in loading an additional script without purpose.
Again, we chose to minify JS files as we did with HTML and CSS and combined our JS files since there were no conflicts or issues.
And then the JS will load.
And this will in most cases, fix the “eliminate render-blocking JS” issue that you may have seen in PageSpeed Insights.
So it’s important to actually test your site’s functions before permanently leaving it on.
Alright, let’s move on to the Media category.
Here, I’ve chosen to lazyload all media files.
LazyLoad improves page speed because it defers the loading of images and videos until they’re visible on the screen.
In fact, WordPress 5.5 will lazy-load images by default, so you won’t necessarily need a plugin if you just want this feature.
Next up is Preloading.
Preloading allows you to define essential resources so that browsers know the priority of files that should be loaded first.
For example, let’s say that your
HTML code looks like this:
Of course, you could edit the code, but that can get messy and confusing if you don’t have coding knowledge.
But if we add another link tag to preload the stylesheet, and this would tell browsers to load the CSS file with a higher priority than the JS file.
And that’s exactly what this option in WP Rocket does for you.
Now, the last thing I want to talk about here is using a CDN.
And it’s easiest to understand how these works if we look at our first example of how devices connect to web servers.
So again, if the server is in LA and a visitor is in Las Vegas, it probably won’t take very long for the two devices to connect, seeing as they’re relatively close in proximity.
But what happens when someone from Germany, India, Australia or Singapore tries to connect to the web server?
It’s going to take longer.
And that’s where CDNs can help.
CDN stands for Content Delivery Network.
And that’s exactly what it is.
A network of servers located all over the world that delivers content to visitors as fast as possible.
By using a CDN, you’re essentially caching files on multiple servers globally.
Then when a visitor tries to access your site, it’ll connect them to the one that’s closest, creating a faster connection between the user and the content.
So if your site attracts a global audience, then it might be worth signing up for a CDN service, enabling the option in WP Rocket, and adding the appropriate CNAME.
Now, there are other free caching plugins that have a lot of these features like Autoptimize and W3 Total Cache, but I personally prefer to pay a small fee for WP Rocket as I’ve had the best results with them.
And the final step in this site speed optimization tutorial is to optimize your images.
Now, since we’ve already added LazyLoad to images, this will solve a lot of problems.
But if you’re using featured images that are above the fold on load, then lazyload isn’t going to help.
Plus, smaller images will save you with storage space.
So the simple solution is to compress your images using lossy or lossless compression.
And there are some great plugins that’ll do this for you like ShortPixel and Imagify.
Now, to give you an idea of how much image compression can help, take a look at the WordPress media library here.
You’ll see that ShortPixel has reduced the image sizes by quite a lot, which will help improve pagespeed.
ShortPixel also has a feature that lets you serve images in the WebP format, which basically lets you compress images even further without compromising quality by much.
Just go to Settings and choose ShortPixel.
Then click on the Advanced tab.
From here, you’ll want to make sure that you’ve checked this box so ShortPixel creates a WebP version of your images.
So now that we’ve done the three main optimizations for WordPress sitespeed, let’s run the PageSpeed tools and compare them with our original benchmarks.
On PageSpeed insights, the page previously scored a 45 on mobile and now has a score of 95.
It had a desktop score of 79 and now has a near-perfect desktop score.
On Pingdom, the page previously loaded in 1.72 second with a 1.7mb page size and 63 requests.
With the new speed test, you’ll see there was a significant decrease on all three metrics.
Page size is just over 900 kilobytes, load time came in at 200 milliseconds, and the number of requests have shrunk by nearly 3X.
And you’ll see the same pattern for GTMetrix and improvement across the board.
Finally, I ran a new crawl of the site with Ahrefs’ Site Audit, and as you can see every single page loaded in under a second.
Now, these are the steps that worked for Marius’s site and I’ve used it for other sites with success.
But remember, each WordPress configuration will be different since you might be using a clunkier theme, more resource-consuming plugins, have inferior hosting, or you have tons of third-party tracking scripts.
So if you’re still unhappy with your site speed after making these optimizations, then you’ll likely need more custom work done for you.
So you may want to consider removing plugins and scripts, switching themes, or hiring a developer to make the appropriate fixes.