Performance Improvements in WooCommerce 3.6 to Speed Up Stores

Written by Gary Murray on April 3, 2019 Blog, News, Product News.

Alongside the new product blocks available in WooCommerce 3.6, we made a series of performance improvements in the front and back end to speed up performance.

Read on to see how these changes will improve both the management and shopping experience on WooCommerce stores.

Front End Changes

We focused efforts on making a range of performance improvements that reduce loading times for the store and individual product pages, which in turn provide a better browsing experience for customers.

The full list:

  • A 62% improvement in the load time when ordering and filtering products
    • A new lookup table, similar to a master list, speeds up the ordering and filtering of products by price, popularity, SKU, and rating. This positively impacts all pages that list products in the front end; and the WooCommerce wp-admin dashboard view, product-related reports, and related functionality in the back end.
  • Reduced overall load time by bypassing inactive webhooks
    • Only active webhooks are loaded on all pages across the store.
  • Reduced the load time for pages with category or product attribute lists
    • Improvements to the custom ordering of categories and attributes process has reduced the load-time on affected pages.
  • Reduced load time of product pages with attributes
    • Caching of product attributes helps frontend pages to load faster.

Back End Changes

On the store admin side, common management views and activities have been optimized, such as:

  • Bulk creation and/or updating multiple products
    • A new method of handling versioned transients has been introduced to speed up the process of bulk-editing or creating multiple products.
  • Making use of lookup tables and indices to speed up data retrieval
    • Running various queries or searches are faster.
  • Loading REST API code only when running REST API queries
    • A double win benefitting the store admin and customer, which also prevents unnecessary code from running during API requests (e.g., cart is not initialized).
  • Working with downloadable products
    • An index has been added to the downloads permissions database table to speed up workflows that use downloadable products.
  • Searching of variations
    • A new feature that enables variations to be searched by attribute name or value.

You can also read an in-depth post about the Performance Improvements in 3.6 that covers the technical details around these performance improvements on the WooCommerce Development blog.

Start Preparing Your Store

Get ready for the latest version of WooCommerce by reviewing How to Update Your Store, and ensure you have taken steps to make a backup to keep on file.

Later this week we will share news about a brand new feature plugin – WooCommerce Admin – which brings powerful statistics, analytics, and custom reports.

14 Responses

  1. Amit
    April 6, 2019 at 6:56 pm #

    Make order number sequential instead using common wp table,as with each order number & new post order numbers skips which is not ideal for in invoicing or add invoice numbering it will help keeping orders sequentials , i tried several plugins but thats not permanent solition.

  2. Hossain Ahamed
    April 8, 2019 at 8:59 pm #

    Hi,There, Need car rental woocommerce free themes .We bought RnB woocomerce and rental plugin But need a them for our web site.Thanks,

  3. WP++
    April 10, 2019 at 11:17 am #

    This is what we were all waiting for:
    “Making use of custom tables and indices to store orders and customer data”.

    Question:
    – Will the upgrade from WooCommerce v3.5.x to v3.6.x break anything – specially regarding the transition of the use of the custom table, how will “old orders” which are in posts table be treated?

    Regards,
    Khayrattee

    • Gerhard Potgieter
      April 15, 2019 at 12:42 pm #

      Hey Khayrattee, the changes are fully backward compatible and all old data will still be there. I think the item you highlighted might be worded wrong as we are not storing the data in custom tables exclusively but instead we are using new custom tables to aid in looking up the data quicker.

      So, in short, all the data is still stored the same way, we are just populating new lookup tables with certain fields on certain actions which speeds up searching and looking up data considerably faster.

      • Gabriel C
        April 25, 2019 at 11:49 pm #

        Currently products are stored in wp_post/wp_postsmeta. When updating price and stock in wp_postsmeta on meta_key _price, _regular_price, _stock, and _stock_status, will I need to update another table as well? Where are the new price and stock locations and the name of the new transients if any?

  4. Eric
    April 15, 2019 at 3:34 pm #

    I can confirm these performance improvements having tested this with 3.6 RC 1.
    The most problematic page has been the checkout (from the moment someone hits “Pay now” until the Order confirmation page was shown). From originally 15-20 secs time is now down to 7 to 9 secs (Which also depends on the amount of emails sent).
    I can also recommend the use of wp-rocket and perfmatters plugins to further improve load times.

  5. Simon
    April 22, 2019 at 4:00 pm #

    It’s great that woocommerce team are working on performance improvements.
    Database optimization is great. But it’s not the bottleneck in Woocommerce.
    Our store with 2000+ products runs all the mysql queries in less than 0.03 seconds, category page, product page, whatever.
    The rest of the load time, around 0.3 seconds, is php code initializing and running.

    You have to do something about the product objects. A product object is several hundred kilobytes, almost half a megabyte, in memory.

    Plugins that deal with all products at “once” have trouble with this.
    For example creating product feeds for google shopping etc.
    Most of these plugins must use workarounds of php memory limits, they create the feeds partially in batches.
    With 2000 products, a php instance will use up to 1000 MB!

  6. Ruth
    April 25, 2019 at 6:42 pm #

    Suddenly prices in shop are without taxes when I am logged out, and they are right when I am logged inn. Is it mistake in update?

  7. Coffeetime
    April 25, 2019 at 6:43 pm #

    As some who is not technically savvy< I would like to learn how to pull customizable reports from customer data and have been unable to figure out how to do that. HELP!

    • jackcsi
      April 29, 2019 at 5:49 pm #

      Whining, “help!” is most likely not going to result in you getting help. lol.

      Try researching on google or hiring a web developer, instead of asking for a hand out, and maybe you might get somewhere.

  8. Matt
    May 3, 2019 at 10:17 am #

    Just the thing we needed. The store`s search queries were really horrible slow.. but now it works very resposnsive and fast! Great work!