Condividi tramite


Memorizzazione nella cache dell'output di YARP

Introduzione

Il proxy inverso può essere usato per memorizzare nella cache le risposte proxy e gestire le richieste prima che vengano inoltrate tramite proxy ai server di destinazione. Ciò può ridurre il carico nei server di destinazione, aggiungere un livello di protezione e garantire l'implementazione di criteri coerenti nelle applicazioni.

Questa funzionalità è disponibile solo quando si usa .NET 7.0 o versione successiva

Impostazioni predefinite

Non viene eseguita alcuna memorizzazione nella cache di output a meno che non sia abilitata nella configurazione della route o dell'applicazione.

Configurazione

I criteri della cache di output possono essere specificati per ogni route tramite RouteConfig.OutputCachePolicy e possono essere associati dalle sezioni Routes del file di configurazione. Come per altre proprietà di route, è possibile modificare e ricaricare senza riavviare il proxy. I nomi delle policy sono insensibili alla distinzione tra maiuscole e minuscole.

Esempio:

{
  "ReverseProxy": {
    "Routes": {
      "route1" : {
        "ClusterId": "cluster1",
        "OutputCachePolicy": "customPolicy",
        "Match": {
          "Hosts": [ "localhost" ]
        }
      }
    },
    "Clusters": {
      "cluster1": {
        "Destinations": {
          "cluster1/destination1": {
            "Address": "https://localhost:10001/"
          }
        }
      }
    }
  }
}

criteri di cache di output sono un concetto di base ASP.NET utilizzato dal proxy. Il proxy fornisce la configurazione sopra indicata per specificare regole per ciascuna route, e il resto viene gestito dal middleware di caching dell'output di ASP.NET Core esistente.

I criteri della cache di output possono essere configurati in Program.cs come indicato di seguito:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOutputCache(options =>
{
    options.AddPolicy("customPolicy", builder => builder.Expire(TimeSpan.FromSeconds(20)));
});

Aggiungere quindi il middleware di memorizzazione nella cache di output:

var app = builder.Build();

app.UseOutputCache();

app.MapReverseProxy();

Per configurare il tipo di memorizzazione nella cache di output preferito, vedere la documentazione memorizzazione nella cache dell'output.