0Pricing
C# Academy · Aula

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 cache

Cache 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 headers

AddOutputCache

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/auth

Variaçã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 + UseOutputCache habilitam o armazenamento em cache no servidor.
  • CacheOutput / [OutputCache] habilitam o armazenamento em cache nos pontos de extremidade; Expire define a duração.
  • Por padrão, apenas respostas GET/HEAD com status 200 e sem autenticação ou cookies são armazenadas em cache.
  • SetVaryByQuery e SetVaryByHeader definem 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

  1. Algoritmos de limitação de taxa
  2. Configurando o middleware de limitação de taxa
  3. Fundamentos do cache de saída
  4. Políticas de cache e invalidação
← Voltar para C# Academy