Проблемы с кэшированием вывода: базовая политика переопределяет определенные политики или никакие политики не применяютсC#

Место общения программистов C#
Anonymous
Проблемы с кэшированием вывода: базовая политика переопределяет определенные политики или никакие политики не применяютс

Сообщение Anonymous »

У меня возникли проблемы с кэшированием вывода в приложении ASP.NET Core. Вот сценарии, с которыми я столкнулся:
  • Переопределение базовой политики:
    Я настроил базовую политику в мои параметры кэширования вывода. Однако когда эта basePolicy добавляется, она применяется к каждому контроллеру, включая те, для которых я явно указал политику NoCache. Это вызывает нежелательное поведение кэширования на контроллерах, которые не следует кэшировать.
  • Никакие политики не применяются без базовой политики:
    Когда я удаляю basePolicy, ничего не происходит. применяются другие мои политики, даже политика SearchData, которую я настроил для конкретного контроллера. Как будто механизм кэширования полностью перестает работать без basePolicy.
    параметры outputCache:

Код: Выделить всё

builder.Services.AddOutputCache(options =>
{
options.AddBasePolicy(builder => builder.Expire(TimeSpan.FromSeconds(10)));
options.AddPolicy("SearchDataCache", builder => builder.Expire(TimeSpan.FromMinutes(1)).Tag("CatalogSearchData"));
options.AddPolicy("NoCache", builder => builder.NoCache());
});
Контроллеры:

Код: Выделить всё

 [HttpGet]
[OutputCache(PolicyName = "SearchDataCache")]
public async Task GetSearchData()
{
// some db call
}

[Route("RefreshSearchData")]
[HttpGet]
[OutputCache(PolicyName = "NoCache")]
public async Task RefreshSearchData(IOutputCacheStore cacheStore)
{
await cacheStore.EvictByTagAsync("CatalogSearchData", default);
return Ok(new ApiResponse(true, "Success", null));
}
Кто-нибудь сталкивался с подобными проблемами или может кто-нибудь объяснить, как правильно настроить кэширование вывода, чтобы basePolicy не переопределял определенные политики, такие как NoCache, и политики применялись правильно, даже если basePolicy нет?
Я пробовал удалить базовую политику и применить определенные политики.

Подробнее здесь: https://stackoverflow.com/questions/788 ... -no-polici

Вернуться в «C#»