2013-02-21 32 views
3

用戶初始與ASP.NET建立會話後,隨後的每個HTTP請求會有多少StateServer會話對象是立即自動獲取和反序列化?例如:ASP.NET「重建會話」性能命中

  1. ALL會話對象獲取的接收請求和會話重新建立,或者......此刻
  2. 會話被重新建立後的對話對象獲取並單獨反序列化,因爲每個請求HttpContext.Session [「...」]是否成立?

答案對我如何使用會話有巨大的影響。例如,如果我已將大量用戶數據預取到會話中,並且每次HTTP請求時StateServer會話都會完全反序列化,那麼我將遇到明顯的性能下降。但是,如果預取的用戶數據僅在請求特定會話密鑰時才反序列化,那麼對於我來說不用擔心。

UPDATE 標記了這個問題的答案後,我發現ASP.NET with AppFabric Server 1.1 has an option to have session restored on-demand rather than all-at-once。這由web.config中的useBlobMode控制。

回答

1

Session加載頁面首次加載時的所有用戶信息Session。然後,在頁面完成處理後,它將用戶會話信息保留回商店。

您可以通過MSDN在custom state store implementations上獲得更好的理解。

這是你應該儘可能少地使用Session的一個主要原因,因爲處理代價昂貴(無論是在數據存儲中傳輸數據還是在數據存儲中保存數據的頁面請求)。