fbpx
Want To Add Extra Images Per Product Variation For Free? Download Now

Variations Pro Significantly slows product page even with object caching on.

Hi all,

Swatches Pro on the WooCommerce shop page is too slow.

I’ve got a lot of information and data to share as we’ve been trying to narrow down the root cause of some poor performance on our shop page for a really long time.

I have tested with just our basic plugins, the storefront theme, and I’ve tested with turning off and turning on our price customisation plugin.

This is the website page https://paramo-clothing.com/en-gb/explore-range/

You’ll know the poor performance well just by visiting the page. But it becomes much more severe when scrolling down to view the rest of the ajax loading products. This will take upwards of 8 full seconds to load 16 products.

I know we’d discussed variation amounts on here before but I will state that we have around 3 colours average with around 5 sizes each. Per product around 15 – 30 variation each. Usually on the lower end of that scale. I’d say this was a relatively low amount of variations and a very typical use case for WooCommerce with the products being items of clothing.

Below is some of the page speed data I’ve gathered under different conditions that have helped me narrow down that this Pro version of the plugin and adding the swatches to the shop page are to blame.

Test, W3 Total Cache on, Local Cache off, local explore-range page, Logged in as admin so no page cache on User Role Price Lists enabled.
  1. Initial Page Load to Finish 22.87s  DOMContentLoaded 9.81s This is probably with no object cache available yet
  2. Initial Page Load to Finish 8.84s DOMContentLoaded 4.58s
  3. Initial Page Load to Finish 8.65s DOMContentLoaded 3.39s
  4. Initial Page Load to Finish 7.51s DOMContentLoaded 2.89s
  5. Initial Page Load to Finish 7.26s DOMContentLoaded 3.16s

User Role Price Lists disabled.

  1. Initial Page Load to Finish 8.85s DOMContentLoaded 4.26s
  2. Initial Page Load to Finish 8.00s DOMContentLoaded 4.00s
  3. Initial Page Load to Finish 6.79s DOMContentLoaded 2.76s
  4. Initial Page Load to Finish 7.26s DOMContentLoaded 2.80s
  5. Initial Page Load to Finish 6.72s DOMContentLoaded 2.70s

Summary

No notable difference once the price changes have been cached with object caching. This extra load on the first page load where no object caching of the pricing is in place wouldn’t have caused the huge spike we saw when we had an influx of traffic. As only one of those users would have needed to create the pricing and it be moved into object caching and then delivered instantly. So this plugin is not the cause of our slow shop speed issues.

Quick Test of disabling child theme paramo-child-theme and using raw storefront

Not enough of a notable difference here put down to coincidence.

DavidTToday at 13:58

Test Disabling Swatch Plugin – Only Pro Disabled, leave free available
  1. Initial Page Load to Finish 5.89s DOMContentLoaded 3.59s
  2. Initial Page Load to Finish 5.45s DOMContentLoaded 2.85s
  3. Initial Page Load to Finish 5.72s DOMContentLoaded 3.49s
  4. Initial Page Load to Finish 5.33s DOMContentLoaded 2.96s
  5. Initial Page Load to Finish 6.74s DOMContentLoaded 2.39s
  6. Initial Page Load to Finish 5.08s DOMContentLoaded 2.80s

Significant enough to be worth looking into. Also there is a noted ticket added to GetWooPlugins in line with this finding.

Advice is to use less variations, I am loading 12 products with less variations than live on this shop page and fewer swatches set up. I will sync with data from live and give this another test to confirm the theory. In theory with the pro plugin enabled the load times should get much worse on my local

DavidTToday at 15:49

Test, W3 Total Cache on, Local Cache off, local explore-range page, Logged in as admin so no page cache on, Live updated DB w/ issues but *working, Swatches, Swatches Pro, Filters all On
  1. Initial Page Load to Finish 14.09s DOMContentLoaded 9.80s
  2. Initial Page Load to Finish 13.76s DOMContentLoaded 9.39s
  3. Initial Page Load to Finish 13.87s DOMContentLoaded 9.50s
  4. Initial Page Load to Finish 9.16s DOMContentLoaded 5.21s
  5. Initial Page Load to Finish 11.04s DOMContentLoaded 5.31s
  6. Initial Page Load to Finish 13.96s DOMContentLoaded 9.62s

Pro off Swatches

  1. Initial Page Load to Finish 11.74s *fresh object cache DOMContentLoaded 7.34s
  2. Initial Page Load to Finish 7.08s DOMContentLoaded 2.97s
  3. Initial Page Load to Finish 5.19s DOMContentLoaded 2.99s
  4. Initial Page Load to Finish 7.22s DOMContentLoaded 2.99s
  5. Initial Page Load to Finish 7.21s DOMContentLoaded 3.09s
  6. Initial Page Load to Finish 12.01s DOMContentLoaded 7.65s
  7. Initial Page Load to Finish 7.08s DOMContentLoaded 3.19s
  8. Initial Page Load to Finish 7.08s DOMContentLoaded 3.19s
  9. Initial Page Load to Finish 7.61s DOMContentLoaded 3.24s
  10. Initial Page Load to Finish 7.74s DOMContentLoaded 3.59s

TTFB Pro On (ms or s)

  1. 2.11
  2. 2.02
  3. 3.37
  4. 6.74
  5. 1.96
  6. 2.00
  7. 2.01s

TTFB Pro Off (ms or s)

  1. 1.54
  2. 5.42
  3. 1.09
  4. 967ms
  5. 968ms
  6. 996ms

DavidTToday at 16:01

Test, W3 Total Cache on, Local Cache off, local explore-range page, Logged in as admin so no page cache on, Live updated DB w/ issues but *working, Swatches On, Swatches Pro on/off, Filters Off
Filters off, Swatches Pro On TTFB (ms or s)
  1. 1.99
  2. 2.15
  3. 7.23
  4. 2.10
  5. 1.95
  6. 1.95

No notable difference here with Filters off vs on above in the last test

Filters off, Swatches Pro Off TTFB(ms or s)

  1. 912ms
  2. 1.05
  3. 906ms
  4. 1.24
  5. 955ms
  6. 967ms
  7. 933ms
  8. 1.11
  9. 1.05

Notable difference again here with swatches pro off

To be clear with swatches pro off, the plugin doesn’t display swatches on the shop page. I imagine this will have almost the identical effect if I turned both pro and the base plugin off.

Hakik Zaman

Hi David,

As you said you have a persistent cache like Redis and still facing this issue.

Unfortunately, we have no more suggestions for you.

Please try to find an alternative solution.

Thank You