天天看點

解決ASP.NET中緩存被覆寫的問題

衆所周知, ASP.NET的System.Web命名空間下的緩存可以用來儲存一段時間的資料

是以, 在項目中我們可能利用它來儲存一些緩存資料.

是以, 很多人寫了這樣的工具類來儲存和加載緩存

儲存緩存:

public static void SetCache(string CacheKey, object objObject)

        {

            System.Web.Caching.Cache objCache = HttpRuntime.Cache;

            objCache.Insert(key, objObject);

        }

public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)

            objCache.Insert(key, objObject, null, absoluteExpiration, slidingExpiration);

加載緩存:

public static object GetCache(string CacheKey)

            return objCache[key];

但是這樣就引入了一個問題:

如果多個使用者同時通路,緩存是不是會被覆寫呢,或者同一個使用者打開不同的視窗,緩存是否會被覆寫呢?

經過測試,答案是肯定的.

那麼,如何解決這個問題呢?

我們想到了sessionId, 那個是一個使用者的會話的概念.

是以,我們隻要引入一個工具類,用來擷取使用者的會話id

public static string GetSessionId()

 {

     return HttpContext.Current.Session.SessionID;

 }

修改後的代碼如下

            string sessionId = Utility.GetSessionId();

            string key = CacheKey + "_" + sessionId;

經過測試, 問題解決OK

繼續閱讀