Usando um cache de saída do Redis
A construção do HTML retornado a um cliente para uma solicitação complexa pode levar tempo e exigir consultas para vários microsserviços. Esse código HTML ou outro código de saída é um candidato comum para o cache.
Imagine que você trabalha para um varejista de equipamentos para atividades ao ar livre. Seu novo aplicativo Web inclui um microsserviço que constrói a interface do usuário e retorna HTML para navegadores. Você deseja garantir que ele seja executado de forma ideal.
Nesta unidade, você aprenderá sobre o cache de saída e como implementá-lo em um microsserviço usando o Redis e o .NET Aspire.
O que é um cache de saída?
Use um cache de saída quando quiser armazenar páginas HTML completas em aplicativos Web ou, em APIs mínimas, partes menores de saída. Você obtém melhorias de desempenho ideais armazenando em cache páginas que são solicitadas com frequência, como a home page do aplicativo.
Configurando o cache de saída no .NET Aspire
As etapas de instalação e configuração são as mesmas do componente de cache distribuído, exceto que você instala o componente de cache de saída nos projetos de consumo.
Configurar o host do aplicativo
No host do aplicativo, instale o mesmo componente de hospedagem do Redis usado para cache distribuído:
dotnet add package Aspire.Hosting.Redis --prerelease
O código de registro é exatamente o mesmo. Você só precisará adicionar esse código se ainda não o tiver adicionado para cache distribuído:
// Register the cache
var redis = builder.AddRedis("redis");
// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
.WithReference(redis);
Configurar os projetos de consumo
Nos projetos de microsserviço, adicione o componente de cache de saída redis:
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Usando um cache de saída
Normalmente, o projeto de consumo é o microsserviço que gera a interface do usuário do aplicativo. Por exemplo, pode ser um aplicativo Web ASP.NET ou Blazor ou uma API mínima. Você deve adicionar o cache de saída ao aplicativo e, em seguida, adicionar middleware ao projeto da seguinte maneira:
// Add the output cache
builder.AddRedisOutputCache();
// Build the app
var app = builder.Build();
// Add the middleware
app.UseOutputCache();
Páginas completas de cache
Para armazenar em cache uma página, use o atributo OutputCache
, como nesta página Razor:
@page "/"
@attribute [OutputCache(Duration = 10)]
<PageTitle>Welcome to Contoso</PageTitle>
<h1>Welcome to Contoso</h1>
This is our homepage. The time is: @DateTime.Now
Saída de cache em uma API mínima
Uma API mínima é um projeto que implementa rapidamente um serviço Web HTTP. Ele reduz o código necessário para criar uma API RESTful evitando scaffolding e controladores desnecessários. Em vez disso, as ações e as rotas da API são declaradas diretamente.
Neste exemplo, uma resposta simples é retornada quando o usuário solicita a ID de um produto:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/products/{ProdId}",
(int ProdId) => $"The product ID is {ProdId}.");
app.Run();
Para armazenar essa resposta em cache, chame o método CacheOutput()
ou aplique o atributo OutputCache
na chamada MapGet
:
app.MapGet("/products/{ProdId}", (int ProdId) => $"The product ID is {ProdId}.").CacheOutput();
app.MapGet("/products/{ProdId}", [OutputCache] (int ProdId) => $"The product ID is {ProdId}.");