Layer the caches: "HTTP caching with Varnish for public pages, Redis application cache for expensive service calls, and Doctrine result cache for reference data that changes daily. Each layer has different invalidation strategies."
HTTP caching: Cache-Control headers, ETags, and reverse proxies (Varnish, Symfony HttpCache). Best for public, cacheable pages. Application caching: Symfony Cache component with adapters (Redis, APCu, filesystem) for expensive computations or API results. Doctrine result cache: caches query results in a PSR-6 pool, useful for read-heavy data that changes infrequently. Strong candidates discuss cache invalidation strategies, cache tagging for selective purging, and the trade-off between cache hit rate and data freshness.
Senior question testing performance architecture. Candidates who only think of one caching layer miss optimisation opportunities. Those who discuss invalidation strategies (the hard part) alongside caching (the easy part) demonstrate real experience.