我已经为我的网站添加了一些缓存,但希望创建一种方法来清除一个页面上的缓存。我环顾四周,尝试了以下但没有一个工作:
HttpContext.Cache.Remove( Response.RemoveOutputCacheItem(Request.RawUrl); HttpResponse.RemoveOutputCacheItem(Request.RawUrl)
有没有人知道如何做到这一点或我出错的地方?我在web.config中创建了我的缓存配置文件:
答案 0 :(得分:0)
使用http方法应该适用于此,您确定已在方法中正确链接相关的URL /文件吗?
只有输入了正确的路由参数后,RemoveOutputCacheItem才有效。例如,您不能在方法中使用查询。您是否可以通过迄今为止的尝试更新您的问题,以便更清楚地了解出现了什么问题?
关于你能做什么的例子是这样声明一个路线定义:
route.MapRoute(
"default",
"[controller]/[action]/[page_id]"
)
因为现在宣布了这个,你应该可以通过:
来调用它 public ActionResult EmptyCache(Guid page_Id)
{
var url = Url.Action("SpecificPage", "default", new { page_id=pageid } );
// the url will therefore be like this: /default/Specificpage/page_id
HttpResponse.RemoveOutputCacheItem(url);
return RedirectToAction("Index");
}
<强>更新强>
确保您没有使用的方法因此将当前缓存转换为子操作。例如,如果您使用诸如Html.RenderAction之类的方法,则在将其作为其子项之后将导致操作。这些缓存在不同的位置,因此removeoutputcacheitem帮助程序将无法工作。
答案 1 :(得分:0)
使用[OutPutCacheAttribute]
你可以使用
List<string> cacheKeys = MemoryCache.Default.Select(kvp => kvp.Key).ToList();
foreach (string cacheKey in cacheKeys)
{
MemoryCache.Default.Remove(cacheKey);
}