gpt4 book ai didi

c# - HttpContext.Current.Cache 和 HttpContext.Response.Cache 有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 00:20:03 29 4
gpt4 key购买 nike

想知道 - HttpContext.Response.CacheHttpContext.Current.Cache 对象有什么区别?以及在 Asp.net MVC Web 应用程序中应该使用什么?

我为什么要问这个问题?

因为,我有自己的[NoCache]属性,负责在 View 重定向期间避免缓存。

例如

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();
}

那么,我的问题是..

我在 Controller 的基类中使用我的自定义属性,它负责清除缓存项,尽管如此,我仍然可以在整个应用程序中访问由登录方法代码设置的缓存键和值..

为什么这两种缓存机制的行为不同?这两者有什么区别?

能否就此提出一些想法或信息。

最佳答案

HttpContext.Current.Cache 是一个提供任何类型的可序列化对象缓存的类。它本身等于 HttpRuntime.Cache让你的水更加浑浊。

我们通常使用 HttpContext.Current.Cache 来缓存来 self 们数据库服务器的数据。这样就不必不断地向数据库询问变化不大的数据。这完全是服务器端的,不会影响客户端。

HttpResponse.Cache允许您设置和控制与响应内容一起发送的各种缓存控制 header 。这会告诉客户端(以及任何中间代理)您建议使用哪种缓存。请注意,我说的是建议,因为客户是否接受完全是任意的。

关于c# - HttpContext.Current.Cache 和 HttpContext.Response.Cache 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622632/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com