想知道 -HttpContext.Response.Cache
和HttpContext.Current.Cache
objects 有什么不同?以及在 Asp.net MVC Web 应用程序中应该使用什么?
为什么我要问这个问题?
因为,我有自己的[NoCache]
属性,负责在视图重定向期间避免缓存。
例如
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var cache = filterContext.HttpContext.Response.Cache;
cache.SetExpires(DateTime.Now.AddDays(-1));
cache.SetValidUntilExpires(false);
cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
cache.SetCacheability(HttpCacheability.NoCache);
cache.SetNoStore();
base.OnActionExecuting(filterContext);
}
我在我的 中使用这个上面的属性BaseController
,比如..
[NoCache]
public class BaseController : Controller
{
}
这很好用!
但是,在身份验证部分 - 我通过以下机制将一些信息存储在缓存中
public ActionResult Login()
{
HttpContext.Current.Cache.Insert("someKey", "someValue", null, expiredTime.Value, Cache.NoSlidingExpiration);
return view();
}
所以,我的问题是..
我在控制器的基类中使用我的自定义属性,该属性负责清除缓存项,即使我仍然可以在整个应用程序中访问由 Login 方法代码设置的缓存键和值。
为什么这两种缓存机制的作用不同?这两者有什么区别?
您能否就此提出一些想法或信息。