How many products can I manage without affecting the performance of WooCommerce ?
What if I have a product with many variations? Will everything slow down?
If you have a shop with more than 500 products avoid WooCommerce, use PrestaShop, WooCommerce can't handle them.
In this post, I'll show you that it is possible to manage your store with WooCommerce, with 35,000 products, or many more if you wish, and have page loading times of less than 1.5 seconds!
Biases about WooCommerce
I spend time in several WordPress and ecommerce groups and the saying is always the same. WordPress is a blogging platform and was not designed to create e-commerce.
That statement is very true, but that doesn't mean, as so many say:
If you have more than 500 products don't use WooCommerce, because WooCommerce slows everything down.
If you have a product with many variations, everything slows down.
WooCommerce is slow, better to use a CMS that has been created to manage e-commerce like PrestaShop or Magento. In some cases, it is true as I will explain later, but not because WooCommerce is slow.
Before I start I would like to clarify one thing, I am not a fan of any CMS, I believe that everyone has different needs and abilities and should therefore choose the platform that best suits their needs.
What I don't like is when people create prejudices. Precisely because if a store created with WooCommerce exceeds 500 products it should slow down? What if I have 499 products and 8000 blog posts instead?
Blog posts and products are stored in the same table....
What if I have 3 products and 8000 blog posts?
Who decides these numbers? Do I have to go to a bingo hall or the fortune teller?
WooCommerce performance: my thesis
Every time I read posts with statements like the ones I listed above, I ask myself: why?
Why if I increase the number of products should it slow down the site?
Why if I have products with so many variations should this slow down the loading speed of my site?
MySQL is designed to handle huge amounts of data, so when I make a query on the database it shouldn't make too much difference if in that table there are 500 records or 5000, we are not talking about millions.
In this post with various tests I will show you that WooCommerce is a great software to create your ecommerce, albeit with its limitations.
But how much does this slow down the loading of your pages in reality?
And above all: how much does the number of products affect WooCommerce performance?
Testing WooCommerce performance
To do these tests I decided to take into consideration two factors:
- The loading time on gtmetrix testing from London
- The number of database queries
I installed WordPress with WooCommerce on a semi-dedicated hosting plan and used the storefront theme, the basic WooCommerce theme.
Let's establish a baseline
First of all we need to establish some baseline values, to have a benchmark, both in terms of performance and database queries.
I installed WordPress and the query monitor plugin. In order not to distort the tests I installed and activated the storefront theme on WordPress and did the first test.
Opening the query monitor window I see that a WordPress installation with storefront theme performs 27 database queries to load the page.
The site loads in 0.5 seconds according to the gtmetrix test. If you were looking for a fast hosting you are in the right place. If you don't trust us you can put us to the test, we offer a 14 days free trial to test and stress the service.
The page has a size of 115kb and has 16 requests. Easy result to achieve with a blank page without images. However, it is not difficult to achieve results around the second if you know how to speed up WordPress.
Now that we have a basis for seeing how quickly a WordPress page loads, let's see what WooCommerce adds.
I installed WooCommerce and set up the basic settings following the setup:
- I didn't install jetpack, I've never understood what use that plugin is, other than slowing down the site.
- I set the shipping with fixed rate, 1 for Italy and 1 for foreign countries.
- I have not configured the taxes since it's a demo.
- I set as payment method to bank transfer to avoid wasting time.
WooCommerce has installed these plugins:
We see that to load the home now 49 queries are needed, an increase we could expect.
Obviously also the loading time has increased, this is because WooCommerce adds css and js in addition to the queries we saw above.
In fact we notice that both the page size and the number of queries have increased, as we could expect.
Obviously it doesn't make much sense to test the home page, we need to test the product page. However, I wanted to report the home page test to have a direct comparison with the test before installing WooCommerce.
SPOILER ALERT: I kept testing the home page with each test, but I won't report the results. The number of queries, number of resources, page size and loading time never changed during the various tests. So the number of products and their variations does not affect the loading time of the home page, and consequently of the pages that are not part of the shop.
If nothing changes in the home page the differences should be seen in the products page, since WooCommerce has to search the database and show only some of them, in our case 16, I left the default settings at 4 rows and 4 columns.
This way we can evaluate WooCommerce Performance as soon as we pass the fateful number of 500 products.
Let's see a few more queries, 2 to be precise, keep in mind that the store doesn't have any products yet, here we are just defining a baseline.
Loading time remains unchanged. A fluctuation of 2 tenths of a second is probably due to loading/unloading of the gtmetrix test server, or our server.
The page size and the number of requests also remain unchanged.
Now we can get into the heart of the testing.
WooCommerce performance and number of products
The first hypothesis to prove was: if I exceed a certain number of products, does it affect WooCommerce performance, would it make WooCommerce slow?
If yes, to what extent?
Let's see what these tests tell us.
WooCommerce with 18 products
We've established a baseline, now let's go add some products and run the same tests.
I used WooCommerce's CSV for the import, so we'll import various products, with images and some variations.
As I said the home page doesn't undergo any kind of variation, so from now on I'm going to run the tests on the store page, which I set to show the last 16 products.
Now that we have some products the number of queries goes from 51 to 92. This also results in an increase in the time to run the queries, about 3 hundredths of a second more. Nothing tremendous, yet....
In terms of speed we notice a slowdown by 4 tenths of a second, a result we could expect since content and images were added, compared to the test before which was on an empty page.
In fact, we observe an increase in page size and in the number of requests. I was saying that we are showing 16 products per page, in fact the number of requests increases by 16: the 16 images that are shown, one per product.
The additional page size is given just by these 16 images.
So if we use WooCommerce with few products, we can expect very good performance.
Certainly this first test shows that WooCommerce is not slow, far from it.
WooCommerce with 200 products
Let me save you a set of identical tests, the WooCommerce performance with 200 products is identical to the results above. So up to 200 products WooCommerce remains fast, no noticeable performance degradation.
The only difference was in the number of queries on the product page. Having multiple products in our store, there were 3 related products on the single page instead of just one. This for obvious reasons increased the number of queries (9) and added 2 queries, the two additional images.
But what if we exceed the limit number of 500? What happens in that case?
WooCommerce with 1000 products
This is where the problems began, exceeding the fateful invented number made WooCommerce slow, it stopped working and then my computer exploded.
I am obviously joking...
There was a further increase in database queries. However, I noticed that this parameter tended to change in a "strange" way depending on the number of products, as we will see in the next tests.
Also the time to execute the queries, as we note, does not depend on the number of queries, but on the server load at that given time.
As for the speed, it remains optimal, we note that it even loads faster with 1000 products than with 18 or 200 products.
This oscillation is due to the moment. 4 tenths of a second depends more on the load on the server and the test server than on a degradation of WooCommerce performance due to the number of products in the database.
Such an oscillation is completely normal and irrelevant.
The page size remains almost the same. The difference in the number of requests and page size is due to the fact that 2 products had two identical images, so they were only uploaded once.
WooCommerce with 3000 products
I kept importing more products on top of products....
As I mentioned the number of queries was variable during testing, not directly related to the number of products. The same goes for the loading time.
The fact remains that there is no noticeable increase in queries, or their execution time, based on the number of products.
The loading time does not change either. In these two different tests you can see that it varies from one moment to another, as is normal to happen, but you don't notice a substantial difference between a store with 18 products and one with 3000.
The page size also remains the same, which we could expect since we keep loading the last 16 products.
WooCommerce with 35000 products
At this point I decided to do a couple of imports to see if I could take this installation to the limit.
I created two files of about 15000 products and imported them. The CSV was about 12MB, it took quite a while but I finally managed to take WooCommerce to the limit and slow it down properly.
Or maybe not?
The number of queries always stays in the same range. It took a little longer to execute the queries, which is understandable given the volume of data now present in the tables, we are talking about a tenth of a second, should not affect the final loading time. Or does it?
Performance remains excellent, the number of products has no influence on WooCommerce performance.
Page size once again does not change.
We can assert that the number of products doesn't make any difference on it and doesn't make WooCommerce slow, it seems to me that these tests prove it without a shadow of a doubt.
WooCommerce performance and product variations
The second hypothesis was: does a product with so many variations affect WooCommerce performance or is it just an urban legend?
These tests should provide some clarity.
WooCommerce product with 9 variations
I tested a product with 9 variations: 3 colors and 3 sizes.
To load the single product page with multiple variations WooCommerce needs to run more queries than when it loads the store home page. In this case we see 130 queries executed in 2 hundredths of a second.
In terms of speed we notice very good performance.
The page size didn't change one bit during testing, so I'm not going to report the result of testing.
WooCommerce product with 10,000 variations
At this point I added another 97 colors and 97 sizes. There was an increase in queries, pretty much insignificant.
If you are curious about the speed test result check out the test above. There was no difference between 9 variations and 10,000 variations.
At this point I decided to try to stress it down and make our dear WooCommerce slow.
WooCommerce product with 100,000,000 variations
Yes you read that right, 100 million variations.
I added two more attributes with 100 variations each, to get to 100 million. I doubt there is a real store with so many variations, and if there is I feel bad for their users, can you imagine choosing from so many available options?
Here we observe a noticeable increase in queries compared to the previous test, but nothing major.
In terms of performance, again, there was no difference.
The test result
So we can answer the question: does the performance of WooCommerce vary depending on the number of products we have or are the questions we asked in the introduction just unfounded assumptions?
I would say that in light of these tests we can definitely say that WooCommerce is a great ecommerce platform and has the potential to offer you great performance.
Those who tell you that if you have more than 500 products you have to use a CMS dedicated to ecommerce are not right, at least not 100%.
In some cases you should use a software like Prestashop or Magento, as I explain in one of the next paragraphs.
Why are sites made with WooCommerce slow?
This is a question that makes sense.
Many customers have sites made with WooCommerce, and they have sub-optimal performance, not even close to the tests you see in this article of mine.
If you have a site with WooCommerce and you're not happy with its performance, here's the answer.
The first problem is the theme. Many themes are beautiful and well made, but they load a huge amount of resources. Css and js files that are not used, but they inflate the weight of the page and the number of requests. These files, even if unused must be downloaded from the browser every time the page is displayed.
This applies to all other features in the theme.
Try creating a staging staging installation and changing themes, put storefront and see what changes:
- loading time
- number of resources
- page size.
This is perhaps the main problem with WooCommerce. Since WordPress wasn't created to create a store, WooCommerce's functions are limited.
To make up for these shortcomings, we tend to use a variety of plugins. I've rarely seen stores with WooCommerce that had less than 15-20 plugins.
Precisely in these cases, as I explain in the next section, it is advisable to choose a CMS designed specifically for ecommerce.
In many cases high resolution images are uploaded, when you could upload a good resolution image and the effect would be the same.
If the images are optimized properly they are smaller in size and don't affect WooCommerce performance. We have two guides on the blog about this:
Of course, I had to mention the engine behind your website.
During our tests I used a semi-dedicated platinum 1 plan.
I noticed in some cases the tendency to save on hosting, looking for a cheap solution at all costs, without thinking about how important it is that your site is fast, especially for an ecommerce site.
If your company doesn't have 100-200€ per year to spend on the engine that keeps up your online store, maybe it's time to completely re-evaluate your online business.
How to choose a CMS for ecommerce
As I mentioned the main problem for WooCommerce performance are the plugins, often necessary, sometimes purely useless, that we add to have extra functions for our ecommerce.
In the design phase we should make a list of the functions we will need, and understand if it makes sense to use WooCommerce or if it's better to use an ecommerce system like PrestaShop or Magento.
If you can use WooCommerce with few plugins, and you choose a light and performing theme you won't have problems. If you need a lot of additional functions, instead of installing 30 different plugins and slowing down the whole process, the advice is to look for a platform that has most of the functions you are looking for in its core, so you can reduce to a minimum the use of plugins and external components. In this case I suggest you to check our article on how to install PrestaShop if you want to start from there.
WooCommerce itself is not slow, far from it.
Just like WordPress is not slow.
If the performance of your store is not optimal, the fault is not with WooCommerce nor with the number of products, as we have seen with the various tests I have shown you in this article.
The problem, similarly to WordPress, is the theme you choose and the plugins.
What do you think of my tests and results?
Let me know in the comments below!