我已经在我的 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
{
...
}
我有另一个管理控制器,它可以允许用户在查找控制器列表中添加和删除项目,这不会经常发生,但是当它发生时,我想以编程方式强制缓存配置文件重置并强制后续 Web 请求获取最新,而不是保留现在过时的缓存数据列表。
如何以编程方式实现缓存重置? - 然后,我可以将此代码添加到我的管理控制器方法中,以强制重置缓存。 以前有人必须这样做吗?
您无法真正清除该缓存,因为它不是服务器,而是客户端缓存。 ResponseCache
属性将只设置某些标头作为响应。简化其工作原理说明:浏览器(或任何中间代理)向 api 发出请求会注意到这些响应标头,看到此响应的有效期为 15 分钟,因此在接下来的 15 分钟内不会重复该请求,而是从其本地缓存中获取它。由于您无法控制该本地缓存 - 因此无法清除它。