Speeding Up Your WordPress Site is necessity not a choice. I once attended a Google Publishers Meet. The only takeaway point from the meet was, “Your Site Should Be Faster Than Light.” That was just a metaphor, but you get the point, right?
Google wants your site to be super fast. But there is a big problem. The majority of the publisher sites use Google AdSense or other ad agencies to make some money. Those who depend on affiliate earnings are happy folks. Why so?
That’s because sites that depend on affiliate earnings do not display ads from some ad network.
The problem with ads is that they run using scripts – third-party scripts that you cannot control. Those scripts slow down the site. For affiliate sites, such scripts are not present, making the sites load significantly faster.
Even if the affiliate sites use banners, they are usually self-hosted; that is, they are present on their servers instead of third-party servers. This allows for greater control and caching, and hence, better speed.
Talking of speed, just how fast does Google want your site to be? Here is what Google says it wants:
- On desktop: Your site should not take anymore than 2 seconds to load completely.
- On mobile: Your site should load completely within 3 seconds.
When Google speaks of mobile, you need to keep in mind a few things:
- Google has switched to mobile-first indexing. This means that your site needs to be mobile-friendly.
- You should optimize your site for speed on 3G connections.
Sites that are mobile-friendly and load very fast on mobile devices rank well in Google search results.
Now, making a site load completely within 3 seconds on a mobile device with a 3G connection is a Herculean task, or is it?
Let’s find out in this tutorial with live examples.
Factors That Slow Down a WordPress Site
The 10 primary factors that slow down a WordPress site include:
- A heavy theme.
- Too many plugins.
- Third-party scripts (like Google Analytics and Google Tag Manager).
- Ad scripts.
- Social sharing plugins.
- Web fonts.
- Heavy or large images and videos.
- Slow servers.
- Absence of caching.
- No CDN.
How do you deal with these things? What should you do to make your site fast so that it loads within 3 seconds on a mobile device?
I will share the tips and tricks that I use for my primary site. Before I delve deeper into each of the factors, I will like to check out some screenshots.
My WordPress Site Performance on Google PageSpeed Insights
Before I tell you what I do for speeding up my WordPress sites, I will like to show how my site performs on Google PageSpeed Insights.
Remember, it is a production site with ads running on it.
Mobile Performance
Note carefully. The segment highlighted in red has the following:
- FCP: 3.8 seconds
- LCP: 3.9 seconds
- CLS: 0.23
The segment highlighted with red shows the data related to my site performance before implementing the current optimization.
Of course, the performance was poor. So, I went for optimization and post-optimization, this is what I achieved:
- FCP: 1.9 seconds
- LCP: 2.1 seconds
- CLS: 0
Apart from that, the Speed Index is 1.9 seconds, which means that the site loads within 1.9 seconds. The Time to Interactive or TTI is 3.6 seconds. This means that certain elements of the webpage in question become interactive in 3.6 seconds. What are those elements? They are ads running on the page, cookie policy, clickable banner, etc.
The overall speed score for the site on a mobile device using a 3G connection is 97 out of 100. That’s incredibly fast. You need to stay between 90 and 100.
Desktop Performance
You can see the difference before and after optimization. The difference is massive, and the speed score after the current optimization stands at 100 out of 100.
So, what do these parameters mean? FCP, LCP, FID, CLS, TTI, etc. mean? Explaining them is possible, but doing so will make this article unnecessarily lengthy and painful to read.
If you want to learn them, you can visit this link. However, if you want to know how much weightage Google gives to each of these parameters while evaluating the overall performance of a website, here is what you should keep in mind:
Parameter | Weightage |
FCP or First Contentful Paint | 15% |
Speed Index | 15% |
LCP or Largest Contentful Paint | 25% |
TTI or Time to Interactive | 15% |
TBT or Total Blocking Time | 25% |
CLS or Cumulative Layout Shift | 5% |
The two most important factors are the LCP and TBT. If these are high, your site is not going to leave a good impression on Google. Again, according to Google, they will now start giving more focus on CLS as well. So, not just LCP and TBT, but even CLS will become a ranking factor.
You need to please Google to get higher rankings in search results! So, as long as those parameters show green dots, you are safe. The moment you lose the green dots, you are in trouble.
My WordPress Site Performance on GTmetrix
Honestly, it is pointless to go beyond PageSpeed Insights and test your website with some other tool. Still, since everyone does that, I will do the same. Here are a few screenshots:
Test results with unmetered connection:
Test results with 3G connection speed:
My site scored A in both PageSpeed Score and YSlow Score for both unmetered and metered 3G connections in four different locations.
But what allowed me to achieve such incredible results?
Here is what I did…
Take Backup of the Existing WordPress Site
To migrate to a new server, I had to take a backup of all my website files and databases. For this, I used a plugin called FastDup.
This is what you will see in the WordPress plugins repository:
Install the plugin and head over to your WordPress dashboard to locate it.
This is what you will see:
Click on it to open the page where you can create a new package.
Once you click on Create Your First Package or on New Package, you will see the option of creating a full site backup or backing up only the database. This is what you will see:
Select Full Site and click on Run Now. Once you do that, you will see this:
Once you click on Create Package Now, you will see the next page which shows this:
Once the package creation is complete, you can download the zipped file by clicking on the Download button and then selecting ‘Archive.’
Once you are done downloading the archive, you need to download the installer file. You can find it on the main window that lists all the packages you created. On the top right-hand corner, you can see the download link for the installer file.
Keep both the installer file and the archive file stored on your computer. You will need both the files later during migration.
The Server – Switched to OpenLiteSpeed [Migrating To a New Server]
The site started its journey with a shared server. It later moved to a VPS server and finally to a cloud server.
On both the shared server and VPS server, the site was running on the Apache server stack. The performance was definitely ugly.
Even with the increased server resources of the VPS hosting, the site gave a disturbing performance. Page speed was awful.
I was then advised by someone to move on to cloud hosting with the Nginx server stack. Moving to Nginx on cloud hosting did improve the speed, but the results weren’t satisfactory enough.
I tried many things that include:
- Changing themes (I changed 6 themes – all premium multi-purpose themes).
- Trying different caching plugins, including the premium WP Rocket.
- Trying different image optimization plugins, including Optimole.
- Reducing the number of ads per page.
- Cutting down on plugins.
- Trying out Jetpack, but it turned out that Jetpack was bloatware.
Nothing helped. So, I turned to a developer with Nginx server’s knowledge, who told me that he can speed up the site using Cloudflare.
He suggested using Cloudflare’s Rocket loader feature and started blaming the ad network in use. He asked me to switch back to Google AdSense. That wasn’t possible because the ad network I was working with managed to increase my site’s income by over 200%. And to the best of my knowledge, the ad network I use uses lazy loading for their ads, making them one of the world’s fastest ad networks.
Unhappy with the developer’s performance, I decided to take things in my hands and started looking for options that could help me speed up my site. The search led me to OpenLiteSpeed WordPress that promised to be 300% faster than normal WordPress installation.
Digging deeper, I found the following:
- LiteSpeed is a proprietary server stack similar to Apache and Nginx.
- OpenLiteSpeed is the open-source version of LiteSpeed.
- OpenLiteSpeed WordPress refers to WordPress running on the LiteSpeed server stack and using LiteSpeed Cache.
- LiteSpeed Cache is available on the WordPress plugins repository, and you can install it, but you can use it only if your hosting provides the LiteSpeed server stack.
Installing the LiteSpeed server stack on your hosting server is not possible if you are using shared hosting. The only shared hosting I know that offers the LiteSpeed server stack is Hostinger. However, Hostinger is plagued with a major problem of downtime.
Yet another problem I noted was that despite offering LiteSpeed server stack in combination with SSD storage, Hostinger is not very fast. This led me to believe that Hostinger’s hardware infrastructure is quite outdated. You can read my full Hostinger review here.
However, you can install LiteSpeed on a VPS server, a dedicated server, or a cloud server. A VPS or a dedicated server is costly, and you need to have the appropriate knowledge to deal with them.
The only option left was cloud hosting. So, I started looking for a cloud hosting solution that will allow me to install OpenLiteSpeed WordPress with a 1-click deployment of the LiteSpeed server stack.
My search revealed the following names:
- Google Cloud Platform
- Microsoft Azure
- Amazon AWS
- DigitalOcean
Google Cloud hosting is expensive. Microsoft Azure and Amazon AWS can be too intimidating for newbies. DigitalOcean, on the other hand, is not only cheap but also allows for 1-click deployments.
However, there is still some technical aspect that you need to take care of. So, I decided to settle for DigitalOcean.
I will show you how I deployed OpenLiteSpeed WordPress on DigitalOcean with relative ease.
Deploying OpenLiteSpeed WordPress on DigitalOcean
The first step is to create an account with DigitalOcean. You can find services that will give you up to $100 free credit with DigitalOcean that you can use for up to 2 months. You will be billed after the 2 months is over or after you exhaust the $100 credit – whichever is faster.
Assuming that you have created an account with Digital Ocean, here is what you need to do:
Step One: Go to Marketplace from the left menu items and search for OpenLiteSpeed WordPress.
Step Two: Click on the option and then click on Create OpenLiteSpeed WordPress Droplet.
Step Three: Add all the details like server size, data center location, SSH Key (or password), etc. For the purpose of this example, I will create a $5 droplet that will give 1GB RAM, 1 CPU core, 25 GB storage, 1 TB transfer.
I will start by selecting the price and size.
Now, I need to add the data center location, for which I will scroll down and select from options available.
The next thing I need to do is to select other options like IPv6, monitoring, etc. I can also use SSH Authentication to remotely access the server or use a password to access the server using the browser-based console of DigitalOcean.
For this example, I will use password-based authentication. If you want to use SSH-based authentication, you can go through my PuTTY user guide.
This is what you will see:
Now, I will tell DigitalOcean how many droplets I want and provide other details like choosing hostname, adding tags, etc. This is what you will see:
I can change the hostname and provide a name that you can easily identify (I will rename it as example-server-5-dollar). You can add tags and enable backups. Finally, click on the ‘Create Droplet’ button (the green button at the bottom).
Once you click on the ‘Create Droplet’ button, DigitalOcean will create a droplet for you. It will take about a minute to create the droplet (which is nothing other than a cloud server).
Once the droplet is created, you need to access the ellipses menu to Add a Domain to finish configuring the LiteSpeed server stack. This is what it will look like:
Adding Domain and Configuring OpenLiteSpeed WordPress Site
Click on Add a Domain option you see in the ellipses menu, you will see this page:
Once you type in your registered domain name (without www or http or https) and click on the Add Domain button, this is what you will see:
You need to add either the A record or the Name Server (NS) records in the registrar’s domain management area from whom you purchased the domain.
Once you add the record(s), DNS propagation will start. You need to wait till DNS propagation is complete. It can take some time (up to 48 hours). Once DNS propagation is complete, you need to come back to your DigitalOcean server.
You can check the propagation status with Whatsmydns.net. This is what it should look like:
Most of the locations (or all of them) should show a green tick. Once DNS propagation is complete, you need to go back to your DigitalOcean server and from the ellipses menu, click on the ‘Access Console’ option.
Once you click on Access Console, a new popup window will open with a black screen. It will be the terminal window where you need to login to your server. By default, the username is ‘root,’ and the password will be the password you entered while creating the server.
This is what it will look like:
Once you enter your root password and login, you will be asked to add a domain. This is what you should see:
Type in the domain name without www or http or https. The server will add both non-www and the www versions.
Once you type in the domain name and hit enter, this is what you will see:
If you have typed in the domain name correctly, type Y and hit enter. If you have typed in the domain name incorrectly, type in N and hit enter. Since I know that I have typed in the correct domain, I will enter Y and hit the enter button.
Once I do that, this is what I will see:
The system will ask you whether you want an SSL certificate from Let’s Encrypt or not. If you want, type Y and hit the enter button. You should always add an SSL certificate.
Once you type Y and hit the enter button, this is what you will see:
You need to enter your email id. If you have set up and email ID for your domain (example: admin@yourdomain.com), you need to enter that. If you want, you can purchase a professional email from your domain registrar. Alternatively, you can keep your Gmail ID.
This is what you will see:
Once you confirm the email, a script will run and install an SSL certificate on the domain. This is what you will see:
The script that installs the SSL certificate will then ask you whether you want to add an HTTPS rewrite rule or not. Type Y and hit the enter button. Once you do that, the LiteSpeed server will force HTTPS redirection even for elements served from servers that do not have an SSL certificate installed.
When you type Y and hit enter on this screen, you will see the this:
It will ask you whether you want to update the system or not. Type Y and hit the enter button on your keyboard.
Let the update happen. This is what you will see:
It will take about a minute for the update to happen. Wait for it to finish. This is what you will see:
Now your LiteSpeed server is ready, and you need to configure your WordPress site. Just type in the URL (domain) in the URL bar of your browser, and you will see this:
Click on the “Continue” button and continue with the following configuration window:
Make sure that you are adding your site title, username, and using a proper password. Once you add the details, click on “Install WordPress.” Save the password properly.
Once you do that, you will get a screen where you will have the option to log into the WordPress dashboard. Just log in!
Once you log in, you will see the WordPress dashboard.
Head over to the plugins segment to see the installed plugins.
You will see a lot of plugins installed. You will not need the following:
- Akismet (anti-spam comment) [I will teach you how to stop comment spam without a plugin later in this tutorial].
- All In One SEO Pack [Use Yoast instead, or you can just keep it if you are already using it on your site].
- All-in-One WP Migration [You will be using FastDup. So, delete it and replace it with FastDup].
- DoLogin Security.
- Google Analytics by MonsterInsights [If possible, add it through the theme you are using. I use GeneratePress, and I add it through the theme].
- Hello Dolly.
- Jetpack. [It is crap. Don’t use it].
- WP Mail SMTP [I don’t use it, but you may need it].
Do not remove the LiteSpeed Cache plugin. It will play a major role in speeding up your site.
This is what my plugins list looks like, to begin with:
I will later remove FastDup once the migration is over, and finally, add a few more plugins.
Actual Migration
Remember the intaller.php file and the zip file you downloaded from your previous server? It is time to upload the file to your new cloud server. The location where you need to upload it is /var/www/html.
You need to get access to that location. Since there is no file manager here, you can use FileZilla or WinSCP. You need to install either one of them. I use FileZilla. So, I will use it for this example.
This is what the FileZilla interface will look like:
Once you connect to your server using FileZilla and navigate to the desired location, download the wp-config.php file by right-clicking it and selecting the download option. This file contains the database name and password for the fresh WP installation on the LiteSpeed server.
Now select the files you downloaded and right-click on them to open a menu. From there, select ‘Upload.’ Make sure that you are in the right location on the remote server.
The zip file will take a while to upload, depending upon its size. If the zip file is several GB in size, it will take hours to upload. When I migrated my site, it took 28 hours to upload because it was 10.34GB in size!
For the sake of this tutorial, I am uploading a small site, which is only 98.9 MB in size. So, the upload should take around 15 minutes.
Once the files upload, open the wp-config.php file that you downloaded. You can open it with the notepad application. You can find the database name and password there. Here is what you will see:
Now go to your site URL and add this suffix and hit enter:
Yourdomain.com/installer.php
You will see this:
Hit the next button on the screen, and you will see this screen:
Once you do that, it will install all site files and folder and override the database. Upon successful completion, you will see this page:
Click on the Admin Login button to get to the backend of your site! Use your site login ID and password (the ones you used before migrating) to log in. That’s it! You have successfully migrated your site to a superfast LiteSpeed server! Check everything twice to make sure that all URLs are working fine.
To the best of my knowledge, FastDup does everything accurately. You need not worry about anything!
Configuring LiteSpeed Cache Plugin
Once you are done migrating the site, the next most important thing you need to do to speed up your WordPress site is to configure the cache plugin. It can be slightly intimidating because there are too many options. However, it is not really difficult.
Stay with me, and you will know the exact settings you need to apply.
Let’s go through the settings of the LiteSpeed Cache Plugin…
The Dashboard
Head over to your WordPress dashboard and locate LiteSpeed Cache on the left menu. Hover your mouse pointer on that to open the submenu, which will give you different options. The first option is the dashboard.
Clicking on “Dashboard” will show the overall stats. This is what you will see:
You cannot edit anything here. For adjusting the settings, you need to move on to the General segment of the plugin.
The General Segment
In the General tab, you will have to add a domain key. You don’t need to do that if you don’t want to associate with QUIC.cloud CDN. If you wish to use this CDN service, you should first add your server IP before requesting a domain key.
Here is what you need to do:
Before you add the domain key, add Server IP in the field provided. This is necessary to whitelist your server’s IP address with QUIC.cloud CDN.
Once you add the server IP (that you can grab from the DigitalOcean account, it is the same IP address that you use to add A records to the domain name), hit the save button, and then go ahead and request the domain key.
You don’t need to worry about creating a domain key or even leave your site to grab a domain key. Right under the domain key field, there will be a button that says, ‘Request Domain Key.’
Since I have already requested it, you cannot see the button in the image above. The key is already there.
For the rest of the settings, you can turn on Auto-Upgrade and Notifications. I don’t like being disturbed by such notifications, and so I turned it off.
The Cache Settings
This segment is the most intimidating. There are eight tabs on this page with each tab containing dozens of configuration options. However, each option comes with instructions and recommendations, making life easy for any user.
Since the options are very self-explanatory, all I will do here is give you screenshots of the settings.
The Cache Tab
The TTL Tab
The Purge Tab
The Excludes Tab
The ESI Tab
The Object Tab
The Browser Tab
The Advanced Tab
Note that most of the settings already exist. You don’t need to tinker around much. Most of the pre-existing settings are perfect and work out of the box. There will be a few that you need to adjust.
The CDN Settings
With LiteSpeed Cache, you can either use QUIC.cloud CDN or you can use Cloudflare. That’s up to you. If you are using Cloudflare, you can get CDN functionality for free, forever. For QUIC.cloud, you can get a free account up to a certain limit, but you will have to pay after that.
While the free-tier is enough for a new site, it will not be enough if you have a large website like mine. It has thousands of images and a large visitor base. So, the cost can rise exponentially.
In fact, LiteSpeed Cache has something called LQIP or Low-Quality Image Placeholder. LQIP loads a very low-quality image placeholder instead of the real image until a ready actually reaches the position on the page where the image is located.
There are two benefits to this:
- LQIP gives the benefit of lazy loading.
- LQIP reduces the page load time and allows for complete page load (without CLS or Cumulative Layout Shift) very quickly.
Unfortunately, QUIC.cloud will charge you for everything, including LQIP.
The good news is that Cloudflare handles image optimization and other CDN oriented optimizations very well. So, you can settle for Cloudflare without activating QUIC.cloud CND. Alternatively, you can use a combination of both.
I don’t like using a combination of the two because of possible potential conflict. So, I settle only for my premium Cloudflare account that costs be $20 a month.
And…
You will not really need Low-Quality Image Placeholder service from QUIC.cloud for achieving the speed that my site gets. However, I will recommend that you opt for QUIC.cloud CDN if you are operating an e-commerce site because it will allow caching your site’s dynamic elements.
Cloudflare allows that too, but the cost is too high compared to QUIC.cloud.
Image Optimization Settings
This is one of the most important segments. Don’t forget that images contribute a lot of weight to your website. That’s especially true when using large images that are not properly optimized for use on the web.
In case you are not aware, images are the biggest contributors in LCP (Largest Contentful Paint) – one of Google’s parameters for evaluating websites.
So, featured images in blog archives and even your WordPress site’s homepage will contribute to LCP. That’s the reason why you need to worry about image optimization.
The LiteSpeed Cache plugin provides epic image optimization features that can help your site to load faster. For starters, it can create webp images and serves them through a rule via .htaccess. This eliminates the need for any extra plugin. However, do note that if you are using Cloudflare, you can serve webp images.
I use both since I have a premium account of Cloudflare, which allows conversion in webp format. In case you are using the free version, you can always depend on the LiteSpeed Cache plugin for the job.
Here are my image optimization settings for LiteSpeed Cache:
Page Optimization Settings
It is not unnatural for a website to have various CSS, HTML, and JS files generated by the theme in use and the plugins that extend a site’s functionality. Combining and minifying them, and sometimes, deferring their load, is what you need to improve your page speed.
Page optimization settings allow you to do that. But be careful. Incorrectly combining and minifying CSS files can actually break the design of your site. So, you need to resort to trial and error for this.
I will show the setting I use. However, that doesn’t necessarily mean that those settings will work for you. Try out different combinations to find what works best for your WordPress site.
The Page Optimization settings segment has seven tabs to deal with. Here are the screenshots for each:
CSS Settings Tab
JS Settings Tab
Optimization Settings Tab
Media Settings Tabs
Media Excludes Tab
Localization Settings Tab
Tuning Settings Tab
Note that though I have combined JS and CSS files, I don’t prioritise their loading. Doing so breaks my site. You may try it out. Usually, it is safe not to prioritize them, but it may work for your website.
Database Settings
Be careful about what you do here. Any mistake can mess up your site. You will often see many things here that no longer exist on your site. Those database entries come from plugins and themes that once existed on your site (that is, you used them at one point in time).
I will suggest that you play around only with the first set of the database settings. Leave everything else as is.
This segment will allow you to clean up and optimize your data with a single click. Here is how it looks like:
If you notice carefully, this segment will also allow you to clean up spam comments with a single click! It is a great tool that the LS Cache offers. You won’t easily find this with other caching plugins.
You may also notice that LS Cache is asking you to change the database engine from the MyISAM engine to InnoDB. If you see such notice, you may consider changing it. However, before you do so, I will suggest that you take a snapshot of your server on DigitalOcean.
This is what you may see under database settings:
Or, you may see this:
If you see that the LS Cache plugin asks you to change the table engine to InnoDB, make sure you take a snapshot by visiting your Digital Ocean server and clicking on the droplet.
Clicking on the droplet will open up a new page with various submenus. Click on Snapshots and take a live snapshot. DigitalOcean will ask you to turn off or power off the droplet before taking a snapshot to ensure data consistency.
It is okay if you don’t power off your droplet. Just make sure that you are not updating your website at that moment when you are taking a snapshot.
This is what it will look like:
What you see here is a live snapshot in progress. A snapshot will allow you to restore your entire website to the previous state with a single click if something goes wrong during table engine conversion.
Crawler Settings
I will suggest you leave this segment untouched unless you know what you are doing. The default settings are just fine.
Toolbox Segment
There are several options in the toolbox segment. They are for advanced users. The only thing that should interest you is the ability to purge the cache.
No need to touch anything else in this segment. The only other tab that might interest you is the Import/Export tab. If you want to export the settings of the current configuration of LS Cache, you can do it from here. You can also import the configuration that you used for some other site.
For the rest of them, just leave them alone!
Choosing the Right Theme
Everyone likes a polished website that is visually appealing. But, if that visual appeal messes around with the site speed, you should think twice!
Here are the things that matter most:
- Speed
- Ease of navigation
- Information
If your site lacks these three things, your readers will leave you for good no matter how visually pleasing your site is.
At the end of the day, people are least concerned about how beautifully designed your website is. As long as your site is functional, easily navigable, and provides the information they seek, they will stick with you.
I tried a lot of themes – all premium! I even tried using free themes. Here is a list of themes I tried:
- Quadrum (Premium)
- Soledad (Premium)
- Breek (Premium)
- Handmade (Premium)
- Punto (Premium)
- Olympus (Premium)
- Lebe (Premium)
- Max Mag (Premium)
- Magazon (Premium)
- Hueman (Free version)
- And many themes from the WordPress repository
Finally, I settled for GeneratePress – one of the simplest and fastest themes I have tested so far.
Yes, even GeneratePress has some cool features like a vertical menu, web fonts, etc., and yet, it has a clean code and keeps the number of http requests low.
I will suggest that whatever theme you are using, never use fancy things on your site. For instance, you should never use web fonts or animations. Using a vertical menu makes sense only and only if you have a very large menu. Otherwise, stick with the good old horizontal menu.
GeneratePress also allows me to add Google Analytics code using hooks and execute the same throughout the site. I don’t need a separate plugin for adding the code.
In short, go for a well-coded theme, uses less code, provides a modular structure to selectively activate or deactivate various modules, and provides options for adding system fonts.
GeneratePress fits in! I have now settled for this premium theme for all my sites. If you find something better or something similar, go for it. No point going for a theme that has tons of options. The more functions your theme has, the heavier it gets, and the slower your site becomes.
Use Only the Necessary Plugins
I will stress on this thing – USE ONLY THE NECESSARY PLUGINS.
Here is the list of plugins that I use for my site:
- Yoast SEO.
- GeneratePress Premium (GeneratePress theme is a free theme. You can activate premium features by purchasing the plugin).
- Grow by Mediavine (it is for adding social sharing buttons).
- Mediavine Control Panel (because I use Mediavine ad network).
- Code Snippets (for adding breadcrumbs).
- LiteSpeed Cache.
That’s it! Your needs may vary. So, choose your plugins wisely.
You may wonder why I don’t have a plugin for stopping comments spam or adding a contact form. You may even wonder why I need a plugin for adding breadcrumbs.
I will give you answers to all these questions.
No Contact Form
A contact form is thought to be an integral part of a business, and it truly is. However, adding a contact form requires a plugin that makes the site heavier. I want a fast website. So, I made a tradeoff.
Instead of adding a contact form, I gave two email IDs on the contact page. People who are serious about contacting me will use those emails and write to me.
I receive over 50 emails every day from various advertisers who want to purchase sponsored postings, sponsored links, and ad spaces on my site.
I receive all those emails without a contact form. So, it is just a proven fact that a contact form may look necessary, but it is not in reality. People only need a way to contact you. A contact form is a tool, and nothing more.
The same results are achieved by providing an email ID.
I have purchased a professional email and set it up properly. I use the Outlook email client to communicate using the professional email.
It just works!
There is another problem. If you use a contact form, you will most likely need to use the WP-SMTP plugin to ensure that all emails land in the inbox instead of the spam folder. So, just to get a contact form on your site, you will need two plugins! That sucks!
Well, the business email that I use comes complete with an SSL certificate. This ensures my email server works with almost every major email provider, like Google and Yahoo.
No Plugin for Adding Google Analytics
I wisely chose the theme that allows me to add the Google Analytics code. You may feel like using a plugin such as the Monster Insights to add the code and get Analytics data right in your WordPress dashboard.
Why do you want that data in your dashboard? Do you really want that? Just can get the data by accessing your Google Analytics account. What’s wrong with that?
Adding a plugin like Monster Insights (no matter how lightweight it is) doesn’t make sense at all. It is simply ridiculous.
What’s more?
Do you really thing Monster Insights or something similar will give the details you can get directly from your Analytics account? That’s never possible, and it is foolish to think so!
Adding Monster Insights will add database tables, which in turn will increase the database queries, making your database bigger and bigger by the day.
A Fancy Slider Plugin Is a Strict ‘NO’
Images are already heavy! Why do you want to add more dead weight to your site by adding a fancy slider plugin? It may look cool, but it is totally not needed. Crop your images in a way that you focus on the subject and use it directly. No point allowing users to go full-screen to enjoy immersive images.
Such sliders make sense only for photography websites (in my opinion). If you are working with WooCommerce or a simple blog, adding a slider will slow down your website. That’s something you should never do.
I made the same mistake a few years back. Today, my site is slider-free, and Google loves its speed. Readers, on the other hand, never complain about a missing slider. They are very happy with the content.
No Page Builder Please
Mark my words! Page Builders are killers! They will obliterate your site, and you will keep wondering what happened.
No matter how lightweight a page builder is, you should not use it. Instead, settle for a simple layout. WordPress now gives the Gutenberg editor that allows you to build custom pages if you need something custom.
Page builders will give you drag-and-drop designing capability. But such function comes with bloated code.
Bloated code means bad page speed, which in turn means Google is frowning down on your site.
The worse part is yet to come!
Imagine that you have a theme that works with a famous page builder like Fusion or WP Bakery. One fine day you decide to change the theme, which is not compatible with the page builder you are using.
Your website will start showing something like this:
Is that content? No! It is not!
Then what is that? It’s freaking shortcode with a lot of things that add bloat. When your visitors see something like this, they aren’t going to smother you will kisses and hugs! They are going to leave your site and never return!
Please don’t use page builders. Keep it simple. Simplicity will take you a long way.
No Fancy Comment Plugin Like Disqus
If you are using it, delete it right now! You don’t need it. Disqus or similar platforms are great for creating a mini conversation area for your WordPress site. But when it comes to website speed, those plugins suck.
Use the native WordPress commenting system. People will engage with your content if it is good. There is absolutely no need to add a comment system to your website.
No Need to Add a Plugin to Stop Comments Spam
Comments spam is one of the biggest problems for WordPress users. One easy way to deal with them is to add a plugin like Akismet to prevent such spam. However, those plugins add up weight to the website, making it slower by executing PHP queries that are not needed.
Yes, comment spam can be very frustrating, especially when you start receiving hundreds of those comments every day!
Fortunately, WordPress has a very powerful system to deal with comment spam. It is a part of the WordPress core, but it requires a bit of hard work.
Take a look at my comments setting in the WordPress dashboard:
Check the options that are highlighted. I put every comment in the moderation queue. And if there is any comment that contains a link, it will invariably go into the moderation queue.
This is an example of how it looks like in the comments section:
I will mark each one of them as spam and then go to LS Cache’s Database settings window and clear all the spam comments with a single click.
You can clean up trashed comments or clean everything that is not needed.
So, adding a plugin to stop comments spam is not a desirable thing to do. It will add extra codes to your site and make your site slow. Leverage the power of WordPress and LiteSpeed Cache.
No Social Media Login for Commenting
Using social media login for commenting is plain STUPID! Not only is that frustrating for users who don’t want to reveal their real identity, but it also adds a hell lot of deadweight to your site.
The comments segment loads slowly because of such options. The worst part is that to enable social media login for comments, you will need a separate plugin. You really want to do that?
Finally, do not forget that GDPR is out there. If you are using social media login for commenting, you will be collecting user data. This can get you in trouble unless you clearly mention how you process the data and how you use it.
GDPR is a very complex thing!
No Gravatar Needed
Using Gravatar will make your site so slow that Google will happily discard you and your content. Gravatar is an old school thing. You don’t need to add author images. You don’t even need to add author bio.
Trust me, no one cares! There is a standing belief that the “author bio” is important for SEO, but that is false. No evidence suggests so. In fact, the author’s bio can be faked. I can write in the biography that I worked for Google or Microsoft. Are you going to verify that?
Even if you want to verify that, how are you going to do so? That’s the reason why Google never considers it a critical ranking factor. Its absence is not going to harm your site at all. My site doesn’t have this feature at all, and still, it ranks well! How?
So, if you are using a plugin for an author bio, ditch that. No need to use Gravatar images, as well. Your content will perform provided, it is great!
Please Don’t Use Jetpack
I have a whole review of Jetpack. You can read that. Long story short – Jetpack is bloatware. It will show you many things, and you will feel like having all those features on your site. When you add those features, your site will slow down like a sloth.
In fact, the hype around Jetpack is so much that many web hosting companies today offer what they call ‘WordPress Hosting.’ They say that they offer optimized servers that can run WordPress smoothly. All they do is that they provide Jetpack and charge exorbitantly high prices.
That sucks! Don’t fall for the trap. My site is a screaming example of what you can achieve without the Jetpack plugin.
You Don’t Need a Backup Plugin
Even if you don’t resort to switching from shared hosting to cloud hosting and use OpenLiteSpeed server stack, you still don’t need a backup plugin. Every shared hosting comes with a backup option by default.
Here is an example of cPanel from BigRock:
You can create backups whenever you want. You are free to create full website backups (database and files) or back up only the database or the website files.
You can even restore the backups you create! There is no big deal. If you are running out of storage space on your hosting account, you can download the backups to your local computer.
For cloud hosting, especially DigitalOcean, things are even better. You can create a snapshot with a single click and restore it with a single click.
Here is what I mean:
So, I will never suggest that you use a plugin for taking website backups. You will frequently come across websites writing articles like “9 WordPress Plugins That You Need.” They all list a particular backup plugin called UpDraft. Don’t fall for that.
What Else Can You Do to Speed Up WordPress Site?
There are many things that you can do. Let me walk you through those things.
1. Firewall
Your site can come under DDoS attacks. Those attacks can not only slow down your website but also take it down for a very long time. You need to have some protection against it.
Yes, you can use a plugin to stop malicious brute force attacks, but the problem with plugins is that they run on your site, which means that the attackers will reach your server first, and then the plugin will block them.
Such plugins are notorious for their ability to slow down WordPress sites. It is therefore suggested that you use DDoS protection at DNS levels. Cloudflare is the best free option you have. However, if you upgrade your plan to $20 a month, it can protect your site from malicious codes being injected right into your server.
You can also try out Sucuri. I will not recommend using Sucuri plugin. Instead, if you decide to use Sucuri, go for their web-based security.
2. Hotlinking Protection
If you are using high-quality images on your site (that you purchase or create), some other websites may steal them. Instead of hosting those images on their own servers, they will serve those images directly from your URLs on their sites.
This leads to increased bandwidth consumption for you. In the case of shared hosting, increased bandwidth consumption can mean slow down! Those sites will be enjoying at your expense.
You need to stop that from happening. One easy way is to enable hotlink protection through Cloudflare. This feature comes with their paid plan, and all you need to do is flip a switch.
However, if you are not willing to spend extra for a premium subscription, you can add a piece of code in your .htaccess file.
Here is the code you need to add:
#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
Just replace yourwebsite.com with your actual domain name.
3. Limit Post Revision
It is normal to revise posts before publishing them. When you keep revising your posts, you will keep adding data to your database. It will make your database heavy and slow it down.
LiteSpeed Cache allows clearing those revisions and even assign a limit to how many revisions to keep.
To limit the number of post revisions, here is the setting that you need to use:
I always set it to zero, but you can set it to anything between 1 and 100. If you want to store post revisions, the ideal number will be 4. No need to add more post revisions!
If you are not using LiteSpeed Cache for some reason, you can limit the number of post revisions by adding code to your wp-config.php file. The code you need to add is:
define( ‘WP_POST_REVISIONS’, 4 );
4. No Google Fonts or Web-Fonts
I don’t care how much you whine about it. I will strictly recommend not to use web-fonts or Google fonts. They increase the HTTP requests. The greater the number of requests, the slower your site it.
Also, Google fonts will cause rendering issues that Google doesn’t like. If you are technical enough, you can download those fonts that you want to use on your site and serve them locally from your server. This will reduce the number of HTTP requests.
In case you cannot do that, keep using the non-Google fonts. As long as the font you are using is readable and scalable, your readers will not really mind.
They don’t need fancy fonts to read your content. All they want is a fast loading site with clearly visible text. Simple system fonts will do.
5. PHP Version
Use the latest PHP version for your WordPress site. The latest version (7 and up) gets a 2x speed boost over older PHP versions. You must use the latest PHP version. Usually, almost all web hosts now allow users to choose the PHP version.
6. Logo
It is needless to say that your site logo is your site’s identity. However, the logo can be one of the many culprits for a slow site. Do not use high-resolution logos. They will slow down your site.
Personally, I prefer to use the text-based name instead of a logo. Texts render faster than images, and hence, helps in faster loading.
If you want to use a logo, keep it small, both in dimensions and size. Typically, a logo should not weigh any more than 10 KB.
7. Widgets
Adding too many widgets on your site is not at all recommended. Especially, do not use Facebook Like widget or Twitter or Instagram widgets. I will suggest that you keep it simple by adding text links to all your social media platforms. Using too many widgets can significantly increase page load times. Please avoid doing that.
8. Disable WordPress Emojis
Starting WordPress 4.2, the WordPress developers included support for emojis in the core of WordPress. They did this to support old browsers. However, this adds an additional HTTP request.
The request is made by a JavaScript file named wp-emoji-release.min.js. You need to disable this file. There are two ways you can do that. The first is to use a plugin called Emoji Settings.
But since I don’t recommend adding plugins, the second way is to edit the functions.php file. It is better that you take a backup of your site before attempting this. In case you are still not sure, you can ask for some professional help.
If you walk the second path, the code that you need to add is:
/**
* Disable the emoji’s
*/
function disable_emojis() {
remove_action( ‘wp_head', ‘print_emoji_detection_script', 7 );
remove_action( ‘admin_print_scripts', ‘print_emoji_detection_script' );
remove_action( ‘wp_print_styles', ‘print_emoji_styles' );
remove_action( ‘admin_print_styles', ‘print_emoji_styles' );
remove_filter( ‘the_content_feed', ‘wp_staticize_emoji' );
remove_filter( ‘comment_text_rss', ‘wp_staticize_emoji' );
remove_filter( ‘wp_mail', ‘wp_staticize_emoji_for_email' );
add_filter( ‘tiny_mce_plugins', ‘disable_emojis_tinymce' );
add_filter( ‘wp_resource_hints', ‘disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( ‘init', ‘disable_emojis' );
/**
* Filter function used to remove the tinymce emoji plugin.
*
* @param array $plugins
* @return array Difference betwen the two arrays
*/
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( ‘wpemoji' ) );
} else {
return array();
}
}
/**
* Remove emoji CDN hostname from DNS prefetching hints.
*
* @param array $urls URLs to print for resource hints.
* @param string $relation_type The relation type the URLs are printed for.
* @return array Difference between the two arrays.
*/
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( ‘dns-prefetch' == $relation_type ) {
/** This filter is documented in wp-includes/formatting.php */
$emoji_svg_url = apply_filters( 'emoji_svg_url', ‘https://s.w.org/images/core/emoji/2/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
If you are using LiteSpeed Cache, it allows removing WordPress emojis without tinkering with the theme files. You will find this option under Page Optimization >> Optimization Settings.
9. Break Comments in Pages and Disable Avatars
If you receive a lot of comments, it is wise to break the comments into pages. This will ensure that your web page doesn’t become too long, and the page loads quickly. Breaking comments into pages isn’t so difficult. WordPress has built-in functionality for that.
You can enable this from Dashboard >> Setting >> Discussion >> Break comments into pages.
This is how it looks like:
Once you enable this, the frontend looks like this:
Also, you need to ensure that you are disabling avatars. You can do that from the Discussion settings of the WordPress Dashboard.
10. Ad Network
If your WordPress site earns from display ads, you will see a performance dip. Ads are served from third-party networks. They are external scripts that send HTTP requests. They can significantly slow down your website speed.
AdSense has time and again come under heat for not addressing the issue. They simply don’t care. However, they have a feature that allows asynchronous ad loading to allow the site’s content to load first, and the ads start loading later.
This feature helps to improve page load time. However, it is better to switch to an ad network that lazy loads their ads. What does that mean? It means that the ads will not load until you scroll to the position where the ad will show up.
The only ad network I know can do this is Mediavine. However, they have strict conditions for accepting websites into their network. First, you need to have 80% of traffic from tier I countries (US, UK, France, Germany, etc.). They prefer US traffic. Second, you need to have at least 50,000 pageviews a month.
I use Mediavine, and I am really surprised to see how their ads lazy load. My site’s performance score on Google PageSpeed Insights makes it hard to believe that it uses ads as a monetization tool. That’s the type of speed you usually see with websites that don’t run ads at all!
11. Enable HTTP/2
HTTP 1.1 was used by the web for a very long time. Later came HTTP/2 with features like server push, multiplexing, header compression, etc.
HTTP/2 requires that your site has an SSL certificate installed. You can get a Let’s Encrypt SSL certificate for free from your web hosting company. At the beginning of this tutorial (deploying OpenLiteSpeed Server), I showed you how an SSL certificate is installed. So, you need not worry about it.
The good news is that you can enable HTTP/2 from the LS Cache setting. You will get the option under Page Optimization settings.
12. Enable Image Lazy Loading
The theme you use may allow you to do that. If it doesn’t, then most of the cache plugins will allow you to do so. The LiteSpeed Cache plugin offers that functionality too. The option is available under Page Optimization >> Media Settings.
13. Use CDN, PLEASE!
Using a content delivery network will vastly improve your website speed by serving your WordPress site’s static files. This vastly improves the overall page load times. If you can’t afford a paid CDN, I recommend that you opt for Cloudflare’s free CDN.
It is one of the finest in business, and if you can afford to pay for a premium plan, I will recommend you go for it. Cloudflare not only provides CDN but also provides many security features that will keep your site safe.
Why Shouldn’t You Trust Too Many Plugins?
I understand that plugins help to extend the functionalities of your WordPress site. However, these plugins are developed by developers who are not related to the core WordPress development teams.
These developers often do not follow the standard rules of developing plugins, leaving their creations full of bugs, often open to many vulnerabilities. Such vulnerabilities often lead to problems like hacked websites, malicious code injections, and more.
Poorly coded themes that do not follow best practices can lead to a massive increase in server load.
On top of that, there are scores of plugins that are barely updated to work with new WordPress core releases. Sometimes, plugins can conflict with themes and other plugins and lead to site breakdown.
You don’t want those things to happen. That’s the reason why I don’t recommend using too many plugins. Use only the ones that matter the most and are frequently updated.
Conclusion
It might be difficult to speed up a WordPress site. However, the hard work you put in will ensure that you achieve great results with Google PageSpeed insights. Eventually, it helps in the better ranking of your site in Google search results, translating into increased profits.
So, what are you waiting for? A fancy but slow site? Ditch that idea right now. Your target is to rank higher in search results, and a better search ranking brings in more profits! Also, a fast website helps to improve user experience, and that is what Google wants too, and so do your website visitors. Don’t forget to check How to Start a Blog if you are just getting started with blogging.