Кэширование действительно работает, но оно применяется ко всем конечным точкам контроллера, даже если у них нет атрибута. Я думаю, что это может быть связано с addbasepolicy (), но я более запутался в своей следующей точке < /li>
Моя названная политика, похоже, не признается на методе GetElementemed, базовая политика с истечением 5 секунд всегда применяется. Если я удаляю кэширование базовой политики, совсем не работает < /li>
< /ul>
Я зарегистрировал службу и впоследствии промежуточное программное обеспечение следующим образом: < /p>
Код: Выделить всё
.AddOutputCache(options =>
{
options.AddBasePolicy(builder =>
builder.Expire(TimeSpan.FromSeconds(5)));
options.AddPolicy("DemoCache", builder =>
builder.Expire(TimeSpan.FromSeconds(20)));
})
< /code>
Я затем создал два контроллера, возвращающих тестовые данные: < /p>
[HttpGet("{index}/get-element-cache")]
[OutputCache(PolicyName = "DemoCache")]
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
public async Task GetElementCached(int index)
{
return Ok(_myDb[index]);
}
[HttpGet("{index}/get-element-no-cache")]
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
public async Task GetElementNoCache(int index)
{
return Ok(_myDb[index]);
}
Подробнее здесь: https://stackoverflow.com/questions/767 ... d-policies