Asp.net HttpContext和#x27;缓存和项目属性?

Asp.net HttpContext和#x27;缓存和项目属性?,asp.net,caching,httpcontext,httpcontext.cache,Asp.net,Caching,Httpcontext,Httpcontext.cache,类的属性和属性之间有什么区别 从MSDN文档中: 缓存 获取当前应用程序域的缓存对象 项目 获取一个键/值集合,该集合可用于在HTTP请求期间在IHttpModule接口和IHttpHandler接口之间组织和共享数据 我真的不明白那个文档想要解释什么 在处理ASP.NET web应用程序时,我经常使用项来缓存每个请求的数据,这样多个用户控件就不会从数据库中查找相同的数据。这在中进行了描述 不过今天,我遇到了Cache属性对于每个请求缓存的用法。我试图理解两者的区别,但找不到任何比较这两者的好文

类的属性和属性之间有什么区别

从MSDN文档中:

缓存
获取当前应用程序域的缓存对象

项目
获取一个键/值集合,该集合可用于在HTTP请求期间在IHttpModule接口和IHttpHandler接口之间组织和共享数据

我真的不明白那个文档想要解释什么

在处理ASP.NET web应用程序时,我经常使用
来缓存每个请求的数据,这样多个用户控件就不会从数据库中查找相同的数据。这在中进行了描述

不过今天,我遇到了
Cache
属性对于每个请求缓存的用法。我试图理解两者的区别,但找不到任何比较这两者的好文档。所以我想知道


HttpContext的缓存和Items属性之间有什么区别?请尝试用示例详细说明为什么您会在不同的现实场景中选择一个而不是另一个。

项目是每个请求的,因此它仅适用于该给定用户对该给定HTTP请求的访问。缓存在内存中存储一段持久的时间,它不依赖于特定的用户。所以缓存可以跨多个请求跨多个用户共享,但项是每个用户每个请求共享的


这取决于您希望数据存在多长时间。我使用项在EF中存储ObjectContext或DbContext之类的内容,我只希望为给定的请求共享这些内容。但是所有用户都将在多个请求中使用引用表数据,因此缓存会更好。

关于用于分区
缓存
数据的请求有什么吗?我们有一个web应用程序,可在多个不同的域上提供请求,每个用户一个域。看起来我维护的代码依赖于不同的域来分离每个用户的缓存数据。我的意思是,特定于用户的数据存储在缓存中,没有任何用户ID或密钥中的任何内容。这是怎么回事?另外,在我链接到的文章中,他们在
Items
键中使用userID,这会让我认为
Items
是在许多用户的请求中共享的。现在我比以前更困惑了…缓存或会话,因为会话是特定于用户的。您还可以通过将用户ID附加到缓存密钥,使缓存用户特定。。。然后,每个用户都可以拥有自己的特定于缓存的条目。在您提供的文章中,他们提供的方法提供了一种在HttpContext.Items中共享数据的方法,该方法可以将数据共享到多个用户控件或自定义控件,但只能在该用户的当前请求中共享。然后,每个请求都会生成Items集合,因此数据在下一个请求中再次可用。