Identify private routes
Cart, checkout, customer accounts, authenticated responses, state-changing API requests and payment callbacks require a separate mode. Check cookies, sessions, request method and parameters. Having a public URL does not mean that its response is the same for everyone. Customer group pricing and personal discounts also affect the rules.
Continue with: Slow OpenCart: find the bottleneck before upgrading hosting.
Check cache keys and invalidation
For public content, determine whether the cache key takes into account the language, currency, and required parameters. Reconcile clearing after price, stock, or text changes. The general rule of "cache everything" without exception can speed up the page and make the data incorrect at the same time.
Continue with: OpenCart payments: verify callbacks and order status.
Test independent customer sessions
Use two independent browsers. Add different products, sign in with just one, change the language and check the amount. No session should see anyone else's data. Then change a public product and check the update time on the domain through all cache levels. Confirm that the callback and POST requests are handled correctly.
Is it possible to cache the entire product card?
Only if all dynamic parts and update rules are taken into account. Otherwise, personal or frequently changing data must be separated.