Używanie pamięci podręcznej wyjściowej Redis

Ukończone

Tworzenie kodu HTML zwróconego do klienta dla złożonego żądania może zająć trochę czasu i wymagać wykonywania zapytań w wielu mikrousługach. Ten kod HTML lub inny kod wyjściowy jest typowym kandydatem do buforowania.

Wyobraź sobie, że pracujesz dla sprzedawcy sprzętu zewnętrznego. Nowa aplikacja internetowa zawiera mikrousługę, która konstruuje interfejs użytkownika i zwraca kod HTML do przeglądarek. Chcesz mieć pewność, że działa optymalnie.

W tej lekcji dowiesz się więcej na temat buforowania danych wyjściowych i sposobu implementowania go w mikrousłudze przy użyciu usług Redis i .NET Aspire.

Co to jest pamięć podręczna danych wyjściowych?

Użyj wyjściowej pamięci podręcznej, jeśli chcesz przechowywać pełne strony HTML w aplikacjach internetowych lub w minimalnych interfejsach API, mniejsze części danych wyjściowych. Optymalne ulepszenia wydajności można uzyskać, buforując strony, które są często wymagane, takie jak strona główna aplikacji.

Konfigurowanie buforowania danych wyjściowych na platformie .NET Aspire

Kroki instalacji i konfiguracji są takie same jak w przypadku składnika buforowania rozproszonego, z tą różnicą, że składnik buforowania wyjściowego jest instalowany w projektach zużywających.

Konfigurowanie hosta aplikacji

Na hoście aplikacji zainstaluj ten sam składnik hostingu Redis, który był używany do buforowania rozproszonego:

dotnet add package Aspire.Hosting.Redis --prerelease

Kod rejestracji jest dokładnie taki sam. Musisz dodać ten kod tylko wtedy, gdy jeszcze go nie dodano do rozproszonego buforowania:

// Register the cache
var redis = builder.AddRedis("redis");

// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
       .WithReference(redis);

Konfigurowanie projektów zużywających

W projektach mikrousług dodaj składnik buforowania danych wyjściowych usługi Redis:

dotnet add package Aspire.StackExchange.Redis.OutputCaching

Korzystanie z wyjściowej pamięci podręcznej

Zazwyczaj projekt zużywający jest mikrousługą, która generuje interfejs użytkownika aplikacji. Na przykład może to być ASP.NET lub aplikacja internetowa platformy Blazor lub minimalny interfejs API. Musisz dodać pamięć podręczną danych wyjściowych do aplikacji, a następnie dodać oprogramowanie pośredniczące do projektu w następujący sposób:

// Add the output cache
builder.AddRedisOutputCache();

// Build the app
var app = builder.Build();

// Add the middleware
app.UseOutputCache();

Buforowanie pełnych stron

Aby buforować stronę, należy użyć atrybutu OutputCache , takiego jak na tej stronie 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

Buforowanie danych wyjściowych w minimalnym interfejsie API

Minimalny interfejs API to projekt, który szybko implementuje usługę internetową HTTP. Dzięki temu kod niezbędny do utworzenia interfejsu API RESTful pozwala uniknąć tworzenia szkieletów i niepotrzebnych kontrolerów. Zamiast tego akcje interfejsu API i trasy są deklarowane bezpośrednio.

W tym przykładzie zwracana jest prosta odpowiedź, gdy użytkownik zażąda identyfikatora produktu:

var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

app.MapGet("/products/{ProdId}", 
    (int ProdId) => $"The product ID is {ProdId}.");

app.Run();

Aby buforować tę odpowiedź, wywołaj metodę CacheOutput() lub zastosuj OutputCache atrybut w wywołaniu 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}.");

Dowiedz się więcej