Is WooCommerce good for large eCommerce?

Is WooCommerce good for large eCommerce?

If you know what you’re doing or are willing to tweak it substantially then yes WooCommerce can scale to larger ecommerce stores however, if you (or your team) are not experienced in large scale WooCommerce Stores then you can get yourself into trouble resulting in a slow and unusable site (read: lower sales conversion than expected).

We’ll discuss some ways around these issues but out of the box WooCommerce can’t handle large scale ecommerce without significant tweaking.

Table of Contents

What are the repercussions of a slow WooCommerce site?

The short answer is that the repercussions of a slow WooCommerce site is a low(er) sales conversion rate than expected. 3% would be industry average but higher is possible depending on your site speed (in so far as site speed is responsible for a good user experience).

The longer answer is that your shop, catalogue, cart and checkout pages (which are effectively your sales funnel) are slower than they need to be or in extreme cases do not load at all. This means that people will leave your site more frequently (known as a ‘High Bounce Rate’ in SEO terms) because they get tired of waiting for the pages to load on their way to checkout (or they don’t load at all and the user cannot progress even if they were patient).

PROTIP: Most site traffic is between 50% and 70% on mobile devices (primarily iPhone models) which have smaller processors compared to laptop and desktop computers so any slowness via WooCommerce will be exacerbated at mobile where most of your traffic is likely coming from.

Does WooCommerce scale well?

As a professional developer I have personally (read more about me here) worked on WooCommerce stores with about 9000 products on a good hosting plan (specifically for WordPress) and around 110 plugins.

I worked on this site for around 2 years as the lead developer but the site admins did not listen (due to poor planning and business requirements) to my advice and we ended up with having to deal with some problems inherent in WordPress and WooCommerce.

In my experience I found that WooCommerce is scalable but not out of the box. Saying that WooCommerce is scalable is some what disingenuous because those that say that are more or less saying ‘WooCommerce is scalable if you know and do several things which most people don’t realise until they already have a slow site‘.

In saying that these issues can be overcome and WooCommerce can be made to scale. As such it is still suitable to large sites but you need to know what you can do to avoid these particular issues, ideally, before you start the project or at least early in the project so these ‘fixes’ are there from the start.

So, what are the issues and what can you do about them?

What are the issues and what can you do about them?

Large amount of WooCommerce Products and or Orders (a meta data issue):

In WordPress (which WooCommerce is based on) Products and Orders are stored in the database (MYSQL Database) as ‘posts’.

In addition to storing products and orders as posts, various kinds of information (known as ‘post meta’ or ‘product/order meta’) that are required to support your application are stored in another table as ‘meta data’.

Specifically, the way in which different post meta is stored in the post meta table is largely to blame. The way that it is stored makes the look up of this information slow because the various meta data are not stored as columns but instead in the same column but with a different ‘meta key’ for each one.

This is problematic because in MYSQL (which WordPress uses to build its database) WordPress will need to string match on each ‘meta key’ to find the correct one (which could be tens of thousands in a large site) which is where the slow search comes in.

Therefore, if you have a page which lists products of orders (perhaps on the shop page or a widget or shortcode) then it will also be referencing and retrieving the meta data in the meta data table. Inevitably this will be slow due to the reasons that I have described above.

The upside of this structure is that you can add various product and order meta data on the fly without having to add a column to the database. For WordPress’s large user base of non-developers this is a significant upside.

From a user point of view the basic problem is that any page which shows products or orders will be more slow than it needs to be in order to present the information to the user. Slow sites means less people convert to a sale ultimately.

How can you avoid the meta data issue?

Option 1: Tackling the problem at the database level

This will be hard (and perhaps not recommended) to avoid at the level of the database because that would mean changing the default database tables or the default PHP code that WooCommerce uses.

Customizing WooCommerce’s core code is possible (generally speaking) but I suspect is not feasible in this particular case as WP’s ability to override WooCommerce’s core code is limited (good at replacing templates but not rally overriding classes and PHP) without hacking the plugin code itself.

PROTIP:

  • Hacking a WordPress Plugin’s core code is problematic because, if done, your edits to the core code will be overwritten when the plugin is next updated. In other words, you lose your alterations and return to slow ‘look ups’.
  • This then leaves you in a position where you can’t update the WooCommerce Plugin which will become problematic as without updating WooCommerce you will be vulnerable to security holes as time goes on and other plugins that work with WooCommerce will eventually not be compatible with your version of WooCommerce – leaving you stranded with older versions of plugins which will also become potential security holes in the future also.

Option 2: Install ‘WP Rocket’ plugin to optimize your WordPress database

I suspect you cant do much about the meta data problem in the above section however there are other database optimizations which will not directly affect the meta data issue but can help to reduce the database size in general. Effectively this will speed up the overall site speed on your WooCommerce site.

There are several of these but WP Rocket is the most trusted based on my research around the web.

Large amount of Plugins:

Inevitably in a WordPress (WooCommerce is based on WordPress) site you will install plugins and most WordPress users are not particularly orientated to limiting plugin installations or even removing old plugins once they are no longer used (and themes for that matter) used or relevant.

The problem with this is that WooCommerce is structured such that the basic WooCommerce Plugin is free but the subsequent related plugins are not free and so to extend your sites features you will install more WooCommerce plugins (as well as the various other non WooCommerce plugins you will more than likely install).

This leads to sites with dozens if not hundreds of plugins. These plugins are not made to ‘play nicely’ with all the other plugins and will often include numerous and irrelevant JS and CSS files on your site which will load for the user in the front end as they are attempting to surf your site.

This has an effect on site speed as each file (CSS or JS) which the users browser has to load is a slight increase in the page load time because that file needs to be retrieved and downloaded in order for its code to take effect on the site. In my experience this can lead to pages which have hundreds of CSS and JS files which is far too many to be acceptably fast in terms of user experience.

A slow site will lead to less sales. You can learn to speed up a WordPress site with too many plugins to alleviate this issue.

What can you do about too many Plugins on a WooCommerce (or WordPress in general) site?

I recommend using Asset Clean Up Plugin which allows you to optimize your site speed by grouping certain files together (reducing the overall number of files the page needs to load) and removing irrelevant files from particular pages (or types of pages) so that either there is less absolute number of files being loaded or the grouped together files are smaller and therefore somewhat faster to load for the user.

Distribution of traffic and site files:

Because WooCommerce is slow at a database level when it comes to products (see above for how this is so) if too many users attempt to load one particular page at the same time the hosting account with which hosts your site can become overloaded leading to an error whereby the site crashes, showing an error message to the user instead of your products) because the database was so overloaded with queries that it stops working (aka crashes).

This might happen if you are, for example, having a sale for a particular time period (pre-christmas perhaps) which leads to more people than usual attempting to access the site or if you just get a general increase in traffic overall.

What can you do to reduce the load on the server?

You could do a few things things primarily.

Use a Static Page cache:

You could use a static page cache. A ‘static cache’ caches the page such that it does not access the database but instead returns a pre-cached HTML version of the page to the user. This is faster and reduces the load on the server as it doesn’t need to process any PHP or access the database.

Use a CDN:

Setting up a CDN (for eg Cloudflare) is slightly different but does something similar in effect as it distributes your sites files to various servers around the world which reduces the load on your single and original server. This is particularly useful if your site is accessed by customers worldwide as the site files will be loaded from a server which is closer to your user.

Increase the memory limit on your server:

You could also increase the memory limit on the server to allow for page which use larger amounts of memory. A site with a lot of products to display (given the meta data structure of WordPress Products and Orders) will need more memory. This is a hack but can get you out of a bind in some cases. It is not a permanent fix because eventually you will run out of memory and actually you are still providing a slow user experience with this ‘patch’.

You can increase the memory limit in several places on your site and server. You should check a few different areas in order to make sure that one is not overriding the others. It’s possible that you change the setting in one place but are unaware that its being overridden in another place.

You should check the following places:

  • wp-config.php – there is a limit here which may be in effect. Check here.
  • It’s possible that you can increase memory limit in PHP code also so check the code for anything like that also if you suspect your
  • You can also change this at the server level so check your cPanel settings for this. In my experience this will change as to where to edit these settings based on your particular host company so it may be best to access their customer service where exactly to edit this.

Learn to customize WooCommerce Fully with an online Udemy course

If you’d like to know more about how to customize WooCommerce completely then Udemy which are low cost, online and have been completed by thousands of people.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *