输出缓存问题:基本策略覆盖特定策略或在没有基本策略的情况下不应用任何策略

问题描述 投票:0回答:1

我在 ASP.NET Core 应用程序中遇到输出缓存问题。以下是我遇到过的场景:

  1. 基本策略覆盖: 我在输出缓存选项中配置了一个基本策略。但是,当添加此 basePolicy 时,它会应用于每个控制器,包括那些我已明确指定 NoCache 策略的控制器。这会导致控制器上出现不需要缓存的缓存行为。
  2. 没有基本政策就无法应用任何政策: 当我删除 basePolicy 时,不会应用任何其他策略,甚至不会应用我为特定控制器配置的 SearchData 策略。就好像缓存机制在没有 basePolicy 的情况下完全停止工作一样。 输出缓存选项:
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<ActionResult<ApiResponse<SearchResponse>>> GetSearchData()
 {
    // some db call
 }

[Route("RefreshSearchData")]
 [HttpGet]
 [OutputCache(PolicyName = "NoCache")]
 public async Task<ActionResult<ApiResponse<string>>> RefreshSearchData(IOutputCacheStore cacheStore)
 {
       await cacheStore.EvictByTagAsync("CatalogSearchData", default);
       return Ok(new ApiResponse<string>(true, "Success", null));
 }

有没有人遇到类似的问题,或者有人可以解释如何正确配置输出缓存,以便basePolicy不会覆盖NoCache等特定策略,并且即使不存在basePolicy也可以正确应用策略?

我尝试删除基本策略并应用特定策略。

c# caching
1个回答
0
投票

我也面临着类似的问题。你能解决这个问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.