以编程方式清除 asp.net 核心中的缓存配置文件

Programmatically clear cache profile in asp.net core

我在我的 asp.net 核心网站 api 中设置了缓存配置文件,如下所示:

services.AddMvc(options => {
     // Cache profile for lookup data will expire every 15 minutes.
     options.CacheProfiles.Add("LookupData", new CacheProfile() { Duration = 15 });    
});

我在 "lookupsController" 的顶部使用了这个属性,因为每个方法返回的信息列表不会定期更改(尽管缓存每 15 分钟自动过期)。

[ResponseCache(CacheProfileName = "LookupData")]
[Produces("application/json")]
[Route("api/Lookups")]
public class LookupsController : Controller
{
    ...
}

我有另一个管理控制器,它可以允许用户在查找控制器列表中添加和删除项目,这种情况不会经常发生,但是当它发生时,我想以编程方式强制缓存配置文件重置并强制后续 web请求获取最新的数据,而不是保留现在已过时的缓存数据列表。

如何以编程方式实现缓存的重置? - 然后我可以将此代码添加到我的管理控制器方法中,以强制重置缓存。以前有人必须这样做吗?

您无法真正清除该缓存,因为它不是服务器而是客户端缓存。 ResponseCache 属性只会设置某些 headers 作为响应。这是如何工作的简单描述:浏览器(或任何中间代理)向您的 api 发出请求,注意那些响应 headers,看到此响应在 15 分钟内有效,因此不会重复该请求接下来的 15 分钟,而不是从其 local 缓存中获取它。由于您无法控制该本地缓存 - 您无法清除它。