日期:2014-05-18  浏览次数:20385 次

請教關於Cache的問題 。
現在我使用Cache,存在這樣的並發問題:
把用戶名保存起來:Cache[ "User "]=TextBoxUser.Text;
跳轉到另外一個頁面時:Label1.Text=Cahce[ "User "}.ToString();

那麼當有其他用戶登陸時候,刷新頁面就會產生並發問題。明明是A用戶登陸卻看到B用戶的用戶名。

Cache信息是保存在服務器內存的,因此多個用戶訪問同一Cache會存在並發問題。由於數據敏感關系,所以不想使用Cookie,如果採用Cache.Insert方法,應該怎麼生成不同用戶依賴項的Cache對象呢?也就是說,怎麼緩存不同的用戶運行時的變量?或者有什麼比較好的解決辦法呢?

------解决方案--------------------
Cache,每个用户的是一样的?
那就先使用session把,我知道这个每个用户是肯定不一样的
------解决方案--------------------
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/crystlmn/html/crconsdkfundamentalspersistencecache.htm

自己去看看msdn把,里面有比较详细的介绍的
------解决方案--------------------
你的情况就是用Session阿
------解决方案--------------------
用session或者cookie
cache是全局的,所有用户可以共享
------解决方案--------------------
1、可以用Session
2、Session可以保存大量数据,但不推荐,Cookie不行。
3、如果你针对每一个用户保存大量数据,那么当你的用户成千上万时,你的服务器内存是否能够承受?这才是Session不应保存大量数据的原因,知其然而不知其所以然。
4、一般说来不应为每一个用户保存大量数据,谈谈你的需求。
------解决方案--------------------
Session可以存大量数据,但不推荐,服务器受不了!按你的需求最好是存文件或数据库,不过访问速度会大打折扣的.不过好象也没有太好的办法了!
------解决方案--------------------
Session.SessionID相对于每一个客户端理论上是唯一的。
------解决方案--------------------
你的这个需求是不适合用Cache的,
因为Cache对每个用户都是共享的,也就是说当一个用户改变,其他用户获得的就是最新改变的

你可以考虑用Seesion,可以保证每个用户都是独立的,不会冲突,
Cookie也可以
------解决方案--------------------
在使用Cache的Key时加入可唯一标识的信息,如Cache[ "USER_ " + Session.SessionID] = "... ";

具体方法可以具体实现,不一定非要用SessionID,只要能唯一标识就行了。