So my buddy Zach 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. Stay tuned. [music] 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 Zach, 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. Alright, let's scroll down to the JavaScript files section. 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 the last option we enabled is to defer
loading of JavaScript. This option will basically delay the loading
of JavaScript files so the most important content like your HTML and CSS can
be delivered to your visitors first. 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. Now, it's important to note that if you choose
to minify, combine, and/or defer your JavaScript files, things may break on your site. 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: Based on this code, the JavaScript file would
need to load first simply because of hierarchy. 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 work
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 Zach'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. So give it a shot and if you enjoyed this
tutorial, then make sure to like, share and subscribe for more actionable
SEO and marketing tutorials. And let me know in the comments if these tips
helped you boost your WordPress site's speed. I'll see you in the next tutorial.