2017-07-03 60 views
0

只是想检查一下。我有以下代码:将数据表存储在缓存中,所有用户都看到了吗?

if (HttpContext.Current.Cache["DataTable"] == null) 
{ 
    Cache.Insert("DataTable", DtMaster, null, DateTime.Now.AddMinutes(2), 
      System.Web.Caching.Cache.NoSlidingExpiration); 
} 

说,在用户A登录并创建包含3行的数据表,如果用户B,然后登录到一个完全机器将他们也看到3行?

我想我问问存储在缓存中的项目是否可用于所有用户?

谢谢。

+2

https://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache(v=vs.110).aspx - 特别是*每个应用程序域有一个Cache类的实例。因此,Cache属性返回的Cache对象是应用程序域中所有请求的Cache对象。*。如果要隔离用户之间的数据,则应该使用会话。 – Rob

+1

是的。 'HttpContext.Cache'是全局的并且跨请求共享,与'Session'不同。另外,将整个DataTable存储在缓存中(每个用户)听起来不是一个好主意,不管存储如何 – haim770

回答

1

是的。

每个应用程序域有一个Cache类的实例。作为 结果,Cache属性返回的Cache对象是应用程序域中所有请求的缓存对象 。

HttpContext.Cache

0

是。 这将适用于多用户的,请不要忘记重置缓存的情况下,如果有任何更改发生在与此数据表记录相关的数据库中。