2011-01-30 32 views
0

比方說,我有一個網站,報告頁面將包含用戶特定的每日報告。使用會話:我濫用了嗎?

默認情況下,用戶登錄今天的報表,但如果他點擊日曆控件並選擇新的日期,則會爲當天加載新的報表。我想要做的是將會話用作報告的緩存。他第一次加載一天的報告時,它會從數據庫加載到會話中,然後從會話加載到頁面。每次他加載一個日期的新報告時,邏輯首先檢查這個特定的報告是否在會話中,並且只有當它不是從數據庫加載時。一份報告大約有15欄,每天約300-500行。會話中將存儲的是對象列表的字典,其中日期爲鍵,列表爲值。我正在使用InProc會話。我還在考慮存儲其他幾個字典以及其他對象列表。

這是一種有效的方式來充分利用.net框架嗎?如果它在調用數據源時並沒有真正提高性能,它會讓它變慢嗎?我正在尋找能夠擴展到大約500-1000位同時在線的用戶。

謝謝。

+0

報告是否針對每個用戶? – 2011-01-30 20:41:03

+0

你在使用inproc會話嗎? – Victor 2011-01-30 20:43:22

+0

是,inproc session – frenchie 2011-01-30 23:53:08

回答

2

這聽起來像你對我的預優化。您是否運行過任何性能測試來驗證您是否將它放入Session(或Cache)中?

您的用戶對此表現表示擔憂嗎?

對於我來說,我不會考慮優化任何類型的高速緩存,直到我知道我有性能問題,然後我會看看爲什麼我有性能問題,並優化

0

有高速緩存和會話狀態之間顯着的差異:

  • Cache是​​基於服務器但會話是基於用戶的(可以跨多臺服務器)
  • 緩存通常是基於URL的,所以如果URL對於所有用戶來說都是相同的,那麼,這不能通過緩存來實現。
  • 緩存將被回收,當服務器接近了內存內存回收(所以你不會使用緩存得到OutOfMemory除外),但會議剛剛開始發展,你會得到一個OutOfMemory如果您正在使用過程中的會話並不是。
  • 會話通常用於需要存儲的用戶級別狀態,但緩存用於性能提升。

綜合以上所述,並考慮到您的要求,您最好使用緩存,除非所有用戶的URL相同。如果您使用的會話狀態,你需要非常小心,因爲只是一點點的性能nicety可以殺死你的網站