2012-07-14 99 views
0

我只是在學習ASP.net,也爲同一個朋友製作一個網絡應用程序。在會話中存儲數據vs從數據庫檢索到達時間?

現在,在我的應用程序中,有一張表將用戶映射到公司的分支,另一張將分支映射到客戶端。當用戶登錄時,我使用查詢來獲取他/她有權訪問的分支的列表,然後使用另一個列表來獲取他負責的所有客戶列表。這發生了很多次,並且在許多頁面上都是必需的。

此外,我使用DevExpress的GridView和GridViewLookUp工具。如果您熟悉它們,它們就像ASP.net中的GridView一樣,並且每次顯示的條目排序或選擇不同的頁面來查看條目時都會導致回發。基本上,我想知道我必須多次解決上述兩個查詢。

平均有100-150個客戶是用戶通常負責的。

所以我想知道的是,對於一個很高的數字,我應該檢索所有客戶端名稱並將它們存儲在一個會話中,這樣我就不必再次連接到數據庫,只要用戶登錄?還是應該保持它的方式,並讓它每次從數據庫中找到客戶端?

+0

哪個更快,沒有太多密集的數據庫服務器,或使用了太多的內存來存儲所有的信息? – Ben 2012-07-14 23:38:21

回答

1

由於此數據特定於登錄用戶,因此您可以將其保留在Session變量中。另一個備選方案是在UI /業務邏輯和數據訪問之間實現一個Cache圖層。每天查詢一次(或您定義的間隔緩存持續時間)並將其保留在Cache中。並在下次你的用戶界面需要它從那裏得到它。如果數據爲空,則表示緩存已過期。再次查詢並存儲它。緩存數據對所有用戶都是全局的,而會話數據是特定於該用戶會話的。

如果你有太多的請求進來,那麼爲每個請求保留一個150個客戶端對象(它有多大?)在一個會話中的副本似乎是一個比較糟糕的方法,而不是將它保存在緩存中。所以我認爲你應該去緩存層選項。