I am a website speed and performance freak who always try to find a better alternative. If I encounter any better alternative for the existing setup, I switch it. That’s why I switched from Yoast to RankMath as a part of the SEO effort.
In a quest for alternatives, I could hardly find any websites or blogs posted about the site’s speed, optimization, and performance review. That’s when I thought I could personally do and share it on this blog. It will help you and me in choosing the best.
Initially, I thought I would test on a good premium server, but I found that most new bloggers prefer to start at a low budget and eventually scale. Hence, I made the test setup on low-grade hardware generally offered by most shared hosting at a relatively low price.
This setup will help in gauging the performance upgrade after using any plugins or server-side optimization. Hence, I will be using the same setup across the board for speed, performance, and load tests.
Now I know that there will be progressive upgrades over time that will boost the performance – if I find any significant upgrades, I will update with new changes.
Note: The post has been updated to support the latest PHP version, however, the screenshot/images still reflect the older version.
Test Server Configuration
I am using the LEMP stack server, which isn’t optimized, just a normal installation without any performance tweaks. Here are the details of server configuration as of April 1, 2021:
- Linux: Ubuntu 20.04
- Web Server: Nginx
- Database: MySQL 8.0
- Process Manager: PHP 7.4
- Disk Type: Mechanical Hard Disk (HDD)
If you want to configure the server-side optimization, you can read through my powerful LEMP stack setup. This is the same LEMP setup I’m using for powering a $6 DigitBin server hosting 6M+ pageviews/month.
Note: there are no gzip, compression, expiry headers, security, or any nginx snippets on this test server. I do have root access via SSH which makes things a lot easier.
Test WordPress Setup
I’ve made a regular WordPress installation without any performance optimization. You can read through this WordPress on Cloud setup guide, which has a few optimization steps, but I ignored them, which created this test rig.
I’ve also installed the essential WP plugins and bloated them with the few most famous plugins to make the setup realistic. Here is the list of plugins running on this test site:
- Contact Form 7
- Cookie Notice & Compliance for GDPR/CCPA
- Download Manager
- Easy Table of Contents
- GA Google Analytics
- Rank Math SEO
- WP Sitemap Page
- WPForms Lite
I haven’t installed the Classic Editor since it will eventually be discontinued. Hence, sticking with the new default Glutenberg Editor. The front-end theme and appearance setup are under the next section – WooCommerce setup.
Note: These installed and active plugins are not manually configured for the best. I just left with whatever the default settings the plugin has offered.
Test WooCommerce Setup
Coming to WordPress theme and appearance, I thought of using a popular theme that even supports WooCommerce. I found the Astra Theme (free), which has enormous popularity and positive reviews.
I quickly installed the Astra theme and also used their Starter Templates to import a complete dummy WooCommerce site with dummy data. This has made the front-end setup simple with few clicks. This is what the front-end store page looks like:
It has also added a few more plugins and bloated the test setup well enough.
- Starter Templates
- WooCommerce Cart Abandonment Recovery
You can check the overall storefront performance in the following section.
Test Blog Post
Not every WordPress user runs the WooCommerce store; instead, most of them prefer it for just simple blogging. Hence, testing as a blog post page makes more sense. Hence I created a test blog post with more than 2000 words, images, sidebar and embedded a few third-party elements like YouTube Video and Tweets.
This made the page size close to 5MB, which I think is heavy but realistic for an unoptimized page. The cropped section of the page included text and embedded tweets.
The content is copied from the Wikipedia page, and the site is set to noindex meta, even blocking search bots with robots.txt file.
Test Server Performance
Now that the server and site are running at bare minimum resources, it’s time to run the test on speed and performance tools. It will give an idea of the unoptimized site and server performance results.
I’ve performed three tests on each of these tools and considered the 3rd test the final result. The CPU and Memory performance were taken from the SSH login using the htop command after performing a load test with 20 simultaneous unique visitors.
I’ve done a thorough test of the blog post page here:
I know that speed and performance results are inferior since I haven’t made any optimization. I want to keep it this way so that I can get the comparison between unoptimized vs. optimized changes made with WordPress plugins or server configuration.
I haven’t tested for the WooCommerce product page, but I believe it will be somewhere on similar lines. However, here are the results for the WooCommerce demosite home page.
Generally, the site homepage is not bloated with heavy scripts from the plugins, and the performance is better than the blog post page. We can confirm the above results that the homepage has slightly better performance.
I also ran a similar test comparing the performance impact of using an HDD server vs. an SSD server; you can read the comparison between HDD vs. SSD hosting server performance for the above test setup. It will explain the performance difference between shared hosting and SSD cloud VPS.
Conclusion: WordPress and WooCommerce Test Setup
This is my complete WordPress and WooCommerce setup for testing plugins and optimizations. After testing any product or services on this test rig, I will keep posting results.
I know it’s not a perfect test setup, but to mimic an unoptimized site and server; however, I am happy to receive feedback if you think I need to make any changes or add anything else.
I will also use the Query Monitor plugin to check the MySQL database calls from the site. However, anything else is highly appreciated.