我們目前正在使用數據庫爲用戶維護狀態信息(在單獨的表格中)。每次用戶訪問應用程序(發送請求)時,我們都會從數據庫中獲取該信息,並在處理請求後將其更新到數據庫中。負載平衡網站的會話管理
這對我們很多項目都非常有效,而且很容易實現,但是這會增加開銷來調用數據庫並保存狀態信息。
有沒有其他方法可以在這種情況下更好地工作?
我們目前正在使用數據庫爲用戶維護狀態信息(在單獨的表格中)。每次用戶訪問應用程序(發送請求)時,我們都會從數據庫中獲取該信息,並在處理請求後將其更新到數據庫中。負載平衡網站的會話管理
這對我們很多項目都非常有效,而且很容易實現,但是這會增加開銷來調用數據庫並保存狀態信息。
有沒有其他方法可以在這種情況下更好地工作?
開箱即用,MS提供了一個StateServer mode。這使您可以將會話數據存儲在由一個或多個Web服務器共享的單個服務器的內存中。在某些情況下(如果你的會話狀態SQL Server負載很重),這可能會給你一個提升。
默認情況下,SQL Server會話提供程序爲每個項目提取並保存會話項目。如果您知道您的會話使用並且效率低下(您爲每個請求獲取並保存多個項目),則可以在SQL Server上實現自定義SessionState Store Provider,該請求在請求開始時獲取所有會話項目,並將它們全部保存在請求。
其他資源:
有很多策略。我希望你的會話是粘性的(即,它始終處於同一臺機器上)。在這種情況下,您可以在本地緩存數據(在內存中)並僅使用數據庫進行備份(「只寫」)。此外,有像memcached這樣的解決方案提供分佈式緩存。