On a large French e-commerce site, we use Varnish as HTTP cache.
We use it for the API as well as for the HTML front ends.
We use ESI, with user-context-hashes allowing us to do
authenticated caching. We mix invalidation by tags but also by ttl.
This is a feedback to explain the choices we had to make, how we use it, what it brings us.
We'll also answer a lot of questions that people have about HTTP caching in practice.