Uso de una caché de salida de Redis
La construcción del código HTML devuelto a un cliente para una solicitud compleja puede tardar tiempo y requerir consultas en varios microservicios. Este código HTML u otro código de salida es un candidato común para el almacenamiento en caché.
Imagine que trabaja para un distribuidor de equipamiento para actividades al aire libre. La nueva aplicación web incluye un microservicio que construye la interfaz de usuario y devuelve HTML a los exploradores. Quiere asegurarse de que funciona de forma óptima.
En esta unidad, obtendrá información sobre el almacenamiento en caché de salida y cómo implementarlo en un microservicio mediante Redis y .NET Aspire.
¿Qué es una caché de salida?
Use una caché de salida cuando quiera almacenar páginas HTML completas en aplicaciones web o, en API mínimas, partes más pequeñas de la salida. Obtiene mejoras de rendimiento óptimas mediante el almacenamiento en caché de páginas que se solicitan con frecuencia, como la página principal de la aplicación.
Configuración del almacenamiento en caché de salida en .NET Aspire
Los pasos de instalación y configuración son los mismos que para el componente de almacenamiento en caché distribuido, salvo que se instala el componente de almacenamiento en caché de salida en los proyectos de consumo.
Configuración del host de la aplicación
En el host de la aplicación, instale el mismo componente de hospedaje de Redis que usó para el almacenamiento en caché distribuido:
dotnet add package Aspire.Hosting.Redis --prerelease
El código de registro es exactamente el mismo. Solo tendrá que agregar este código si aún no lo ha agregado para el almacenamiento en caché distribuido:
// Register the cache
var redis = builder.AddRedis("redis");
// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
.WithReference(redis);
Configuración de los proyectos de consumo
En los proyectos de microservicios, agregue el componente de almacenamiento en caché de salida de Redis:
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Uso de una caché de salida
Normalmente, el proyecto de consumo es el microservicio que genera la interfaz de usuario de la aplicación. Por ejemplo, puede ser una aplicación web de ASP.NET o Blazor o una API mínima. Debe agregar la memoria caché de salida a la aplicación y, a continuación, agregar middleware al proyecto de la siguiente manera:
// Add the output cache
builder.AddRedisOutputCache();
// Build the app
var app = builder.Build();
// Add the middleware
app.UseOutputCache();
Almacenamiento en caché de páginas completas
Para almacenar en caché una página, use el atributo OutputCache
, como en esta página de 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
Almacenamiento en caché de la salida en una API mínima
Una API mínima es un proyecto que implementa rápidamente un servicio web HTTP. Reduce el código necesario para crear una API RESTful evitando andamiaje y controladores innecesarios. En su lugar, las acciones de API y las rutas se declaran directamente.
En este ejemplo, se devuelve una respuesta simple cuando el usuario solicita el identificador de un producto:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/products/{ProdId}",
(int ProdId) => $"The product ID is {ProdId}.");
app.Run();
Para almacenar en caché esta respuesta, llame al método CacheOutput()
o aplique el atributo OutputCache
en la llamada 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}.");