Fundamentos do cache de saída
Armazene respostas em cache para reduzir o trabalho.
Fundamentos do cache de saída é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.
O que é o armazenamento em cache da saída?
O armazenamento em cache da saída guarda a resposta HTTP completa de um ponto de extremidade, para que solicitações repetidas sejam atendidas pelo cache sem executar novamente o manipulador. Isso reduz drasticamente a latência e a carga em pontos de extremidade com muitas operações de leitura.
// First call -> handler runs, response stored
// Next calls -> response served from cacheCache de saída versus cache de resposta
O armazenamento em cache da saída integrado (adicionado no .NET 7) armazena as respostas no servidor, sob seu controle total. O antigo armazenamento em cache da resposta apenas emite cabeçalhos HTTP de cache e depende do cliente ou dos proxies para respeitá-los.
// Output caching: server-side store you control
// Response caching: just Cache-Control headersAddOutputCache
Registre o serviço com AddOutputCache.
builder.Services.AddOutputCache();UseOutputCache
Adicione o middleware ao pipeline com UseOutputCache. Coloque-o depois do roteamento e, se houver, depois do CORS.
var app = builder.Build();
app.UseOutputCache();
app.MapControllers();CacheOutput em um ponto de extremidade
Habilite o armazenamento em cache de um ponto de extremidade com CacheOutput (API mínima) ou com o atributo [OutputCache] (controladores).
app.MapGet("/products", GetProducts)
.CacheOutput();
// Controller:
// [OutputCache]
// public IActionResult Get() => Ok(...);Definindo uma expiração
Controle por quanto tempo uma resposta permanece armazenada em cache com Expire.
app.MapGet("/products", GetProducts)
.CacheOutput(policy => policy.Expire(TimeSpan.FromSeconds(30)));O que é armazenado em cache
Por padrão, apenas solicitações GET e HEAD com status 200 são armazenadas em cache, e somente quando não há um cabeçalho Set-Cookie nem autorização envolvida — armazenar por engano respostas autenticadas e específicas de um usuário é perigoso.
// Cached by default: GET/HEAD, 200, no cookies/authVariação pela cadeia de consulta
Duas solicitações para o mesmo caminho com cadeias de consulta diferentes normalmente devem ser armazenadas separadamente. Use SetVaryByQuery.
app.MapGet("/search", Search)
.CacheOutput(policy => policy
.Expire(TimeSpan.FromSeconds(60))
.SetVaryByQuery("q", "page"));Variação por cabeçalho
Você pode variar a chave do cache pelos cabeçalhos — por exemplo, para fornecer uma cópia armazenada em cache diferente para cada Accept-Language.
policy.SetVaryByHeader("Accept-Language");Uma política básica para tudo
AddBasePolicy aplica um padrão a todos os pontos de extremidade, que ainda pode ser substituído por pontos de extremidade individuais.
builder.Services.AddOutputCache(options =>
{
options.AddBasePolicy(policy =>
policy.Expire(TimeSpan.FromSeconds(10)));
});Desabilitando para um ponto de extremidade
Se uma política básica armazenar tudo em cache, exclua os pontos de extremidade dinâmicos com NoCache.
app.MapGet("/cart", GetCart)
.CacheOutput(policy => policy.NoCache());Verificação rápida
Confirme a diferença entre os dois recursos de armazenamento em cache.
Recapitulação
Você aprendeu os fundamentos do armazenamento da saída em cache:
AddOutputCache+UseOutputCachehabilitam o armazenamento em cache no servidor.CacheOutput/[OutputCache]habilitam o armazenamento em cache nos pontos de extremidade;Expiredefine a duração.- Por padrão, apenas respostas GET/HEAD com status 200 e sem autenticação ou cookies são armazenadas em cache.
SetVaryByQueryeSetVaryByHeaderdefinem a chave do cache.
Próximo tópico: políticas de cache e invalidação.
Perguntas Frequentes
A aula “Fundamentos do cache de saída” é grátis?
Sim — o texto completo de “Fundamentos do cache de saída” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.
O que vou aprender em “Fundamentos do cache de saída”?
Armazene respostas em cache para reduzir o trabalho. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C# Academy?
Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Fundamentos do cache de saída”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C# Academy?
Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Algoritmos de limitação de taxa
- Configurando o middleware de limitação de taxa
- Fundamentos do cache de saída
- Políticas de cache e invalidação