有没有办法在动作上设置OutputCache属性时阻止页面被缓存?
这样,当随后点击页面时,它不会存储先前返回的通用错误页面。
下面的示例显示了一个实例,当应用程序因任何原因(db timeout等)导致异常时,应该不要缓存页面。
[OutputCache(CacheProfile = "Homepage")]
public ActionResult Index()
{
var model = new HomepageModel();
try
{
model = Db.GetHomepage();
}
catch
{
//Do not want to cache this!
return View("Error");
}
//Want to cache this!
return View();
}
更新 最后,我只需要添加以下内容:
filterContext.HttpContext.Response.RemoveOutputCacheItem(filterContext.HttpContext.Request.Url.PathAndQuery);
这取自another question。
答案 0 :(得分:2)
最简单的方法不是从此操作方法返回错误视图,而是在发生错误时重定向到错误操作。
catch
{
return RedirectToAction("Error");
}
如果你不能这样做,可以编写一个调整response.cache值的动作过滤器。
答案 1 :(得分:1)
最后,我只需要将以下内容添加到错误视图中:
<%@ OutputCache NoStore="true" Duration="30" VaryByParam="*" %>
这将页面设置为仅缓存30秒。
Simples!