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
.