以编程方式清除ASP.NET Core中的缓存配置文件

4

我在我的 Asp.net Core Web 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请求获取最新的数据,而不是保留现在过时的缓存数据列表。

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

1个回答

4

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


{btsdaf} - Rob McCabe
1
{btsdaf} - Evk
Thanks for the info Evk! - Rob McCabe
对于现有用户来说可能没有意义,但是清除并重新生成缓存对于新用户来说是有意义的,这样他们就能更快地获取新数据。 - To Ka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接