現在我使用Cache,存在這樣的並發問題:
把用戶名保存起來:Cache["User"]=TextBoxUser.Text;
跳轉到另外一個頁面時:Label1.Text=Cahce["User"}.ToString();那麼當有其他用戶登陸時候,刷新頁面就會產生並發問題。明明是A用戶登陸卻看到B用戶的用戶名。Cache信息是保存在服務器內存的,因此多個用戶訪問同一Cache會存在並發問題。由於數據敏感關系,所以不想使用Cookie,如果採用Cache.Insert方法,應該怎麼生成不同用戶依賴項的Cache對象呢?也就是說,怎麼緩存不同的用戶運行時的變量?或者有什麼比較好的解決辦法呢?

解决方案 »

  1.   

    對於不同的用戶,怎麼存取不同的Cache?
      

  2.   

    Cache,每个用户的是一样的?
    那就先使用session把,我知道这个每个用户是肯定不一样的
      

  3.   

    什么是 Cache?Cache 是 ASP.NET 中用于保持状态的基于服务器的方法。Cache 在功能上类似于 ASP 和 ASP.NET 中的 Application 对象: Application 允许跨应用程序范围保持任何对象。 
    放置在 Application 中的对象对所有用户可用。但可广泛用于整个应用程序的 Application 不是为保存用户专用信息设计的。 
    Cache 具有 Application 的所有这些功能,但它添加了新的智能级别用于管理瞬态数据: 可以使用基于文件的、基于关键字的或基于时间的依赖项对添加到缓存的对象进行配置。如果关联的文件或关键字更改,或者经过了一段指定的时间,则将从缓存中自动删除对象,下次需要该对象时将在缓存中放置更新的版本。 
    添加到缓存中的没有依赖项且使用频率不高的对象将自动过期。 
    当对象从缓存中删除时,将触发事件。您可以编写代码在该事件上运行并将对象的更新版本加载到 Cache 中。 
    如果使用原始关键字字符串添加对象的替代版本,则它将覆盖以前的版本。为防止发生覆盖,请将替代定义连接到关键字字符串使对象的每个替代版本都是唯一的。Cache 优于 Application 之处在于它不仅可以像 Application 那样存储所有用户都可以访问的信息,而且 Cache 还可以根据其依赖项中的更改对自身进行更新。
      

  4.   

    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/crystlmn/html/crconsdkfundamentalspersistencecache.htm自己去看看msdn把,里面有比较详细的介绍的
      

  5.   

    session和Cookie能保存少量簡單的數據,但我通常想保存比較大的數據,上面我隻是舉個特例。
      

  6.   

    用session或者cookie
    cache是全局的,所有用户可以共享
      

  7.   

    我就是想使用Cache,怎麼生成不同的用戶依賴項Cache呢?比如用Cache.Insert方法。
      

  8.   

    你用一个参数来命名每个对应的Cache,再实例化
      

  9.   

    Cache[username]="aaa";
    用户名作为key值
      

  10.   

    1、可以用Session
    2、Session可以保存大量数据,但不推荐,Cookie不行。
    3、如果你针对每一个用户保存大量数据,那么当你的用户成千上万时,你的服务器内存是否能够承受?这才是Session不应保存大量数据的原因,知其然而不知其所以然。
    4、一般说来不应为每一个用户保存大量数据,谈谈你的需求。
      

  11.   

    Session可以存大量数据,但不推荐,服务器受不了!按你的需求最好是存文件或数据库,不过访问速度会大打折扣的.不过好象也没有太好的办法了!
      

  12.   

    沒關系,因為服務器性能很好,也有海量內存,隻是內部少數人使用,所以不用擔心內存和資源消耗的問題。babyrockxray(紫色阴影) ( ),Cache[username]="aaa";我根本不設置用戶名,我想通過連接IP(或者是其他可以唯一區分連接用戶的元素)來確定用戶依賴響Cache,但不知道該如何寫。
      

  13.   

    請 Ivony(授人以鱼不如授人以渔,上海谋生) 、 babyrockxray(紫色阴影) ,還有其他熱心的朋友繼續關注此帖。
      

  14.   

    Session.SessionID相对于每一个客户端理论上是唯一的。
      

  15.   

    Ivony(授人以鱼不如授人以渔,上海谋生) ,請問你的意思是使用Session.SessionID來作為Cache依賴項的Key嗎?
      

  16.   

    你的这个需求是不适合用Cache的,
    因为Cache对每个用户都是共享的,也就是说当一个用户改变,其他用户获得的就是最新改变的你可以考虑用Seesion,可以保证每个用户都是独立的,不会冲突,
    Cookie也可以
      

  17.   

    babyrockxray(紫色阴影)
    已经说了,如果你用cache的话,可以设定一个key来的
      

  18.   

    haolaiwu(宁愿相信世界上有鬼,也不相信女人那张嘴) ( ) ,我已經說過了:
    沒關系,因為服務器性能很好,也有海量內存,隻是內部少數人使用,所以不用擔心內存和資源消耗的問題。babyrockxray(紫色阴影) ( ),Cache[username]="aaa";我根本不設置用戶名,我想通過連接IP(或者是其他可以唯一區分連接用戶的元素)來確定用戶依賴響Cache,但不知道該如何寫。
      

  19.   

    在使用Cache的Key时加入可唯一标识的信息,如Cache["USER_" + Session.SessionID] = "...";具体方法可以具体实现,不一定非要用SessionID,只要能唯一标识就行了。