2011-11-07 57 views
1

我知道我可以將小值存儲到Session有多少內存分配給會話變量?

最近我在Visual Studio中的ASP.NET應用程序,我已經學會了我還可以存儲較大的值,如DataTable

這讓我想知道有多少存儲Session可以存儲。這是否依賴於瀏覽器或PC上的RAM?

回答

2

ASP.NET Session是存儲在承載該網站的網絡服務器。所以限制是你的網絡服務器有多少RAM,而不是客戶端PC上的瀏覽器或RAM。因此,如果您的網站上有4個用戶,並且每個用戶都擁有128MB的會話,那麼您的網絡服務器將擁有超過512MB專用於ASP.NET的RAM。

我也非常小心儲存了很多東西會議。特別複雜的類型,如DataTable。這是因爲每次訪問該對象時都必須進行序列化/反序列化,這可能會嚴重影響Web服務器的CPU。

我會推薦一些best practices for ASP.NET Session閱讀起來。

+0

哦!我問過的好事。感謝您的鏈接。 – jp2code

+0

快速跟進另一個upvote:我有一個'DataTable',我試圖添加行(想到一個購物車),但如果我在後面的代碼中聲明'DataTable',每次我測試* * ADD **按鈕向數據添加另一行,'DataTable'爲** NULL **。最好的解決辦法是什麼? – jp2code

+1

如果您的DataTable對象正在從同一個ASP.NET頁面創建和訪問,那麼您可以將其存儲在ViewState中。 ViewState存儲在頁面上,所以如果你的DataTable變得非常大,你可以看到你的頁面負載顯着增長。如果它不是太大,則可以通過ViewState集合中的代碼訪問它(語法與Session類似)。 – ptfaulkner