2012-06-18 67 views
1

在一個aspx頁面上,我必須加載一個帶有來自數據庫的值的DropDown。在頁面生命週期中,數據保持價值的最正確的地方是什麼?ASP.NET緩存對象的使用

Cahce對象? 會話? ViewState?

更多細節:

  • 這些數據都存儲在一個DataTable
  • ,行可還200
  • 的數據是用來filted GridView的項目
+2

數據有效期有多長?頁面的生命週期?會話的生命週期?應用程序的一生?回答這個問題,你有你的答案:) –

+0

頁面壽命 – AngeloBad

+1

你什麼時候加載的項目? ASP.NET將已經在處理數據的持久性(使用ViewState),除非你將它們注入到客戶端? – Widor

回答

2

如果數據的獲取成本很高並且對所有用戶都是相同的,則進行緩存。

會話如果數據是昂貴的獲得,如果數據是便宜的獲得取決於用戶

沒有。

如果數據位於管理頁面或流量無關緊要的地方(內部網站,很少訪問的頁面),則爲ViewState。 200行可能有點太多了。

+0

每個用戶的數據都不相同,而且價格相當昂貴,但它們僅從源獲取一次(頁面加載) – AngeloBad

+0

如果頁面很少訪問或項目部署在內部網絡中,請轉到ViewState。順便說一句,你可以使用緩存與每個用戶的數據,但你必須以某種方式將密鑰基於用戶ID或用戶名。在這種情況下,我不確定會話是否比緩存更好。它取決於用戶界面的流程以及可靠清除會話變量的能力(因爲如果用戶在站點上處於活動狀態,它將不會過期) – Stilgar

+0

Definetly完全控制會話對象。我選擇會話,也是因爲這個數據存儲在某個地方只屬於頁面。所以在頁面加載中,我可以處理它。 – AngeloBad

1

如果所有的字符串數據很少變化,緩存是個好主意。如果它定期更改,那麼我不會(因爲你會經常清理和重新加載緩存,這是一種浪費)。

按會話或視圖狀態保存它並不會給你帶來太多的性能提升,因爲這些都是在用戶請求中提供的。我討厭viewstate,但如果你不能像上面提到的那樣緩存,viewstate是最合適的地方。

+0

數據可以在每個頁面上改變並且對所有用戶都不共用。你爲什麼討厭viestate? – AngeloBad