2013-08-21 85 views
0

我已經閱讀了很多有關在會話/視圖狀態下存儲數據表/集的看法,並且普遍認爲它不是一個好主意,因爲它減慢了網頁的速度..但它有其優點。 Now Iam製作一個網站,允許用戶創建/管理/主持quizzes ..我想從數據庫中檢索一定數量的問題(問題的價值將被定義)並將其存儲在會話中維護的數據表... Max 。沒有問題應該是120 .. 因此,要存儲在會話中的總數據= 120個問題+選項+ correctanswer;以及諸如候選人和用戶數據的分數等其他小事情在會話中存儲數據集

我的問題是:考慮到最大數量的問題是120,這些數據是否會嚴重影響我的頁面的性能,如果是這樣,請通過告訴另一種方式幫助我方法... THX。

+0

爲什麼您需要在會話中存儲120個問題+選項+答案?爲什麼你只是不把值存儲在數據庫中,並在需要時檢索它們?如果你有一些性能問題,這意味着你做錯了什麼,爲了存儲目的使用會話永遠是一個壞主意。它意味着存儲當前狀態的手段。這不是數據存儲!順便說一句,'從數據庫中檢索一定數量的問題(問題的值將被定義)並將其存儲在會話中維護的數據表中? – walther

回答

0

視圖狀態當然不是一個存儲這種數據的好地方,因爲數據集將被序列化成一個(非常長的)字符串併發送到每個請求的客戶端。一般來說,我會盡可能地避免查看狀態(在我看來,它有更多的缺點而不是優點)。

只要您使用進程內會話模式,在會話中存儲數據集應該沒問題。在這種情況下,會話數據被保存在內存中,這種方法的唯一缺點(正如我所看到的,沒有涉及到您的任務),有時您可能會考慮釋放當前不需要的內存。如果您使用SQL Server存儲會話數據,那麼我會選擇其他存儲作爲序列化/反序列化數據集,在這種情況下可能會影響應用性能。

0

這取決於您要在應用程序上設置限制的位置。

將數據存儲在內存中會將應用程序限制到一定數量的併發用戶。

每次從數據庫獲取數據都會降低應用程序每秒可處理的請求數。

與任何優化一樣,只有當您知道需求是什麼時才應該進行優化,因此我建議您只從數據庫獲取數據,並在實際需要時添加緩存。