【问题标题】:How can I remove individual HTTP responses from the .NET cache?如何从 .NET 缓存中删除单个 HTTP 响应?
【发布时间】:2019-11-15 03:17:43
【问题描述】:

我有一个 ASP.NET MVC 控制器,它有一个返回文件并用 [HttpGet] 修饰的方法。

第一次调用时获取文件,返回前获取代码:

ControllerContext.HttpContext.Response.Cache.SetExpires(DateTime.Now.AddDays(7));
ControllerContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.Public);
ControllerContext.HttpContext.Response.Cache.SetValidUntilExpires(false);

对该 [HttpGet] 方法的后续请求从缓存中返回文件,因此 HTTP 请求甚至无法到达该方法。

其他地方是从文件系统中删除这些文件的代码,但后续请求会从缓存中提取响应,因此仍然可以下载文件。

删除文件时如何从缓存中删除这些项目?

【问题讨论】:

    标签: c# asp.net-mvc caching


    【解决方案1】:

    您可以添加代码以检查文件是否存在于特定位置,然后从缓存中返回一个文件。

    或者

    如果您的删除文件的代码存在于同一个应用程序中,那么您可以添加代码以在文件被删除后清除缓存。

    【讨论】:

    • 我考虑了这两个选项,但也不知道该怎么做。第一个:我的代码永远不会到达,所以我无法检查文件是否存在。第二个:我不知道清除整个缓存是否安全,我不知道如何只清除一部分缓存。不管怎样,我不知道怎么做。
    猜你喜欢
    • 2013-12-11
    • 2014-03-21
    • 1970-01-01
    • 2012-04-20
    • 2011-04-21
    • 1970-01-01
    • 2011-07-05
    • 2011-03-25
    • 2018-03-10
    相关资源
    最近更新 更多