我正在使用一個asp.net應用程序,它將大部分數據存儲在數據庫中而不是會話。我想知道每種方式的優缺點,哪種方式更好。例如,你有一個非常繁忙的站點,而不是在會話中存儲用戶特定的變量,有一個稱爲用戶數據的數據庫表,它可以存儲所有用戶特定的數據,這些數據可以通過查詢數據庫從任何頁面訪問。哪一種更好的方法,會話或數據庫?在asp.net中存儲數據庫與會話的用戶變量
6
A
回答
2
有趣的問題。如果它的數據在會話中不重要(比如說,查看最後一頁) - >會話。如果它的數據應該是持久的(比如密碼) - >數據庫。有趣的案例和你可能提到的那個:應該是持久化的數據,但也經常使用(比如說,用戶名)。從這些角度來看,我傾向於從數據庫中將這些值複製到會話中,以便我可以在沒有數據庫訪問的情況下工作,而無需在頁面中執行簡單任務。
3
當AppDomain重置時,存儲在會話狀態中的任何內容都將消失。
你可以通過使用out-of-proc會話狀態處理程序來避免這種情況,但這並不比數據庫好。
3
會議(但它取決於很多會話配置的):
- 沒有數據庫訪問,或更低。
- 臨時存儲:至少在會話結束時,您可能會丟失信息。
- 也許存在一些安全問題,具體取決於您存儲會話信息的位置
- 不共享:如果您使用的是服務器場,則可能有問題,但一臺服務器可能無法訪問其他服務器會話。
- 如果客戶端禁用了cookie,可能無法正常工作。
數據庫:
- ,因爲如果你需要在每個頁面上的信息,每次回發的數據庫流量。
- 永久性存儲。
- 未與客戶端存儲信息(cookie ...)。
- 共享:可從Web場中的任何服務器訪問的數據。
請注意,您可以將會話信息存儲在數據庫中。這就是爲什麼我在Session部分使用「may」這個詞。 請參閱here some session configuration and possibilities
2
在很多情況下,我使用Session
來存儲有關...呃...「會話」的臨時數據。在ASP.NET中,會話是可配置的。您可以使用使用服務器內存的in-proc
(默認)。您還可以將會話配置爲使用數據庫或會話管理工具(以防服務器內存出現問題或移至羣集/服務器場環境)。
會話是暫時的。當您真正存儲有關正在使用您的應用程序的用戶的數據時,這非常棒。當用戶離開應用程序並且他/她的會話到期時,內存被釋放。你不必手動清除任何東西。
會話使用服務器的內存。只要你有足夠的內存,並且你不在服務器集羣上,這個效果很好。內存很快,因此在會話中獲取和設置數據非常快,並且使用零網絡帶寬。
說了這麼多,在我的一些應用程序中,我將會話配置爲使用SQL。它基本上與直接使用數據庫相同,但我不必處理DAL ......只需讓框架爲您工作即可。
相關問題
- 1. 在ASP.net會話變量中存儲的最大數據量
- 2. ASP.NET的會話變量存儲
- 3. 獲取存儲在php登錄會話的數據庫變量
- 4. 在asp.net中存儲會話數據mvc
- 5. 不能將會話變量存儲到數據庫中
- 6. 與會話變量的ASP.NET緩存?
- 7. 會話中存儲的數據量
- 8. 在Asp.net會話中存儲大量數據
- 9. 會話變量值不存儲到MS Sql Server數據庫
- 10. 在會話變量中存儲文件?
- 11. 會話不在PHP中存儲變量?
- 12. 存儲會話變量
- 13. 存儲在會話中與從數據庫中檢索
- 14. 如何在MEAN.JS中爲每個用戶會話存儲變量?
- 15. 在會話變量中存儲用戶標識
- 16. 如何將會話變量數組存儲在mysql數據庫中?
- 17. 什麼數據應該存儲在會話變量中Laravel 5
- 18. 使用mysql2數據庫在會話中存儲數據
- 19. 存儲單獨的會話變量數據表中的JSF
- 20. PHP登錄 - 從數據庫獲取用戶數據或存儲在會話中?
- 21. 在ASP.NET頁面中存儲會話變量?
- 22. ASP.NET MVC2 - 檢測JavaScript,將結果存儲在會話變量中
- 23. 存儲會話數組變量
- 24. 存儲會話與數據庫中的值 - Rails
- 25. 用戶存儲自己的數據。 Mysql表名取自會話變量
- 26. 如何將會話的用戶數據存儲在Flask中?
- 27. asp.net中的會話變量
- 28. 在會話中存儲對象時會話變量問題
- 29. Asp.net會話存儲
- 30. 會話數據庫存儲laravel