wp-media / wp-rocket

Performance optimization plugin for WordPress
https://wp-rocket.me
GNU General Public License v2.0
699 stars 218 forks source link

WooCommerce: WP Rocket's "clean" functions run numerous times during checkout #2287

Open vmanthos opened 4 years ago

vmanthos commented 4 years ago

On WooCommerce sites, when:

WP Rocket's rocket_clean_post() and rocket_clean_files_users() are called numerous times, proportional to the items that were added in the cart.

If those are just a few, everything is working as expected. However, when a lot of items are added in the cart, this can lead to the script timing out and the order taking a lot of time to be processed and completed.

For the rocket_clean_files_users(), we could limit it to run just once per order.

Reference: WooCommerce's functions/methods that are used to update the stock

wc_reduce_stock_levels https://github.com/woocommerce/woocommerce/blob/7701d4b57cb20dc89e25bb7bf2ff872d85f4c535/includes/wc-stock-functions.php#L139-L196

wc_update_product_stock https://github.com/woocommerce/woocommerce/blob/7701d4b57cb20dc89e25bb7bf2ff872d85f4c535/includes/wc-stock-functions.php#L42

update https://github.com/woocommerce/woocommerce/blob/7701d4b57cb20dc89e25bb7bf2ff872d85f4c535/includes/data-stores/abstract-wc-order-item-type-data-store.php#L63-L92

save https://github.com/woocommerce/woocommerce/blob/7701d4b57cb20dc89e25bb7bf2ff872d85f4c535/includes/wc-stock-functions.php#L50

Cache clearing takes place here: https://github.com/woocommerce/woocommerce/blob/dc5712db84b45fa215c5096cf55e669292e89383/includes/abstracts/abstract-wc-product.php#L1354-L1394


Related ticket: https://secure.helpscout.net/conversation/1064404566/142633/

camilamadronero-zz commented 4 years ago

Related ticket https://secure.helpscout.net/conversation/1083550989/146172?folderId=2675957

svaldesm commented 4 years ago

I'm the guy who reported the issue by Camila. Happy to help test and see if there's a solution. I love WP Rocket but our best customers, the ones who make big orders, have an awful experience because of this. Thanks for your help!

vmanthos commented 4 years ago

Another ticket: https://secure.helpscout.net/conversation/1090990969/147529/

As a possible solution, we could disable the automatic cache clearing/preloading until after an order has been processed.

We would need to store the IDs of the products for which we need to clear cache/preload.

naratt commented 4 years ago

Any update ? What i found on my website is that checkout is vary slow (30+sec) if the products belongs to multiple categories.

sandyfigueroa commented 4 years ago

This case has the same issue when a product belongs to multiple categories: https://secure.helpscout.net/conversation/1275188620/192678/

jazir555 commented 3 years ago

Any update?

GeekPress commented 3 years ago

Any update?

If we don't comment on the issue, it means there is no update. Please note we have 445 opened tickets, and we need to prioritize...

NataliaDrause commented 3 years ago

Related: https://secure.helpscout.net/conversation/1416492108/236984/

NataliaDrause commented 3 years ago

Possibly related: https://secure.helpscout.net/conversation/1458495144/249058/

NataliaDrause commented 2 years ago

Possibly related: https://secure.helpscout.net/conversation/2024580575/372051/