Response caching at application level is slow. Output caching caches at server level for max speed.
Enable (.NET 7+):
// Program.cs builder.Services.AddOutputCache(); var app = builder.Build(); app.UseOutputCache();
Use on Endpoints:
app.MapGet("/products", async (IProductService service) =>
{
return await service.GetAllProductsAsync();
})
.CacheOutput(policy => policy.Expire(TimeSpan.FromMinutes(5)));
// First request: 50ms (database query)
// Next requests: 0.5ms (from cache)
// = 100x faster!
Vary by Query String:
.CacheOutput(policy => policy
.Expire(TimeSpan.FromMinutes(5))
.SetVaryByQuery("category", "page"));
// Different cache for /products?category=1 vs category=2
