2012-06-04 54 views
1

我最近一直在閱讀有關sessionless控制器的內容,它似乎是一個有趣的想法,因爲它improves perfomance並讓ajax調用異步,正如通常他們應該。MVC 3 - Sessionless控制器數據存儲選項

但是,我不能想出一個很好的方式來存儲以前由會話存儲的數據。我有很多單次獲取的數據,我得到了一次,並通過幾頁走。我的第一個想法是使用MemoryCache,但讀到post我開始懷疑它,因爲IIS可以隨時放棄我的數據。

正因爲如此,我有點困惑我應該怎麼做才能將數據存儲在會話中。我讀了一些關於NoSQL和MongoDB的內容,但是這不會像我一直需要獲取數據一樣嗎?

你可以給我一些澄清和技術,我可以用作臨時數據存儲?

+0

我從不使用會話(只是一個授權cookie)。你需要存儲什麼樣的數據? – jgauffin

+0

@jgauffin我有一個財務應用程序,並有一箇中心頁面,獲取大量的數據。每次用戶移動到其他頁面時不得不獲取這些數據根本就沒有意思。通常他們是ViewModel的列表,我從數據庫中獲取它們。如果我不使用會話,當用戶轉到其他頁面時,每次都必須搜索相同類型的數據。 – AdrianoRR

回答

0

您是否考慮使用HttpContext.Cache?正如你在像這樣一個會議說,沒有任何理由,你不能創建基於當前請求的會話ID緩存鍵:

// cache key 
var cacheKey = string.Format("{0}-{1}", "SomeKey", Session.SessionID); 

// save to cache 
HttpContext.Cache.Insert(cacheKey, <yourobject>, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(20)); 

從那裏,它只會沿着傳遞的問題sessionid並在稍後檢索:

HttpContext.Cache[cacheKey] 
+0

這不是簡單地從一種類型的會話持久性轉移到另一種類型嗎? –

+0

難道你不是在問什麼? – Jesse

+0

我並沒有問原來的問題。我想澄清我會補充......「這會如何改變性能問題和農場場景等與會話?」換句話說,HttpContext緩存優於會話,除了過期的靈活性(無論如何你都沒有顯示)? –

相關問題