OutputCacheMiddleware – WebApi

Udostępnij

Czasami proste rozwiązania mogą okazać się najlepsze. Jeśli mamy dosyć proste API, może się okazać, że wystarczy parę linijek, żeby poprawić wydajność. Na start wystarczy kilka linijek w kodzie. Dodatkowo metoda AddOutputCache może przyjąć lambdę, żeby skonfigurować options. W options możemy ustawiać Policy, AddBasePolicy, które będzie się aplikowało do wszystkich wywołań, albo AddPolicy, gdzie możemy podać nazwę i później się nią posługiwać.

builder.Services.AddOutputCache(x =>
{
    x.AddBasePolicy(c =>
    {
        c.Expire(TimeSpan.FromSeconds(1));
    });

    x.AddPolicy("10sec", c =>
    {
        c.Expire(TimeSpan.FromSeconds(10));
    });
});

app.UseOutputCache();

Mając skonfigurowane named policy, możemy je przypisać do kontrolerów albo konkretnych metod kontrolera. Na poniższym przykładzie widać, że jeśli spróbujemy wywołać metodę dla id = 1, to przez 10 sekund będziemy otrzymywać tę samą odpowiedź. Jeśli wpiszemy id = 2, nowa wartość zostanie wygenerowana, ale również będzie zwracana przez kolejne 10 sekund.

[HttpGet("{id}")]
[OutputCache(PolicyName = "10sec")]
public IActionResult Get(int id)
{
    return Ok(Guid.NewGuid());
}

Warto pamiętać, że Output Caching domyślnie działa dla odpowiedzi, w których status code to 200, oraz dla metod HTTP GET.

Czytaj również  CORS - który to już raz
Scroll to Top