Excluding pages from the cache
If using caching plugins, make sure you exclude the following pages from the cache through their respective settings panels:
- Cart
- My Account
- Checkout
These pages need to stay dynamic since they display information specific to the current customer.
W3 Total Cache Minify Settings
Ensure you add ‘mfunc’ to the ‘Ignored comment stems’ option in the Minify settings.
WP-Rocket
WooCommerce is fully compatible with WP-Rocket. No extra configuration is needed. All WooCommerce pages are automatically detected and not cached.
Varnish
if (req.url ~ "^/(cart|my-account|checkout|addons)") { return (pass); } if ( req.url ~ "?add-to-cart=" ) { return (pass); }
Why is my Varnish configuration not working in WooCommerce?
Check out the following WordPress.org Support forum post on how cookies may be affecting your varnish coding.
Add this to vcl_recv above "if (req.http.cookie) {": # Unset Cookies except for WordPress admin and WooCommerce pages if (!(req.url ~ "(wp-login|wp-admin|cart|my-account/*|wc-api*|checkout|addons|logout|lost-password|product/*)")) { unset req.http.cookie; } # Pass through the WooCommerce dynamic pages if (req.url ~ "^/(cart|my-account/*|checkout|wc-api/*|addons|logout|lost-password|product/*)") { return (pass); } # Pass through the WooCommerce add to cart if (req.url ~ "?add-to-cart=" ) { return (pass); } # Pass through the WooCommerce API if (req.url ~ "?wc-api=" ) { return (pass); } # Block access to php admin pages via website if (req.url ~ "^/phpmyadmin/.*$" || req.url ~ "^/phppgadmin/.*$" || req.url ~ "^/server-status.*$") { error 403 "For security reasons, this URL is only accesible using localhost (127.0.0.1) as the hostname"; } # Add this to vcl_fetch: # Unset Cookies except for WordPress admin and WooCommerce pages if ( (!(req.url ~ "(wp-(login|admin)|login|cart|my-account/*|wc-api*|checkout|addons|logout|lost-password|product/*)")) || (req.request == "GET") ) { unset beresp.http.set-cookie; } #
Why is my Password Reset stuck in a loop?
This is due to the My Account page being cached, Some hosts with server-side caching don’t prevent
my-account.php
from being cached.
If you’re unable to reset your password and keep being returned to the login screen, please speak to your host to make sure this page is being excluded from their caching.