4

我在我的 asp.net 核心 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
{
    ...
}

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

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

4

1 回答 1

4

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

于 2017-10-23T09:26:43.007 回答