2012-10-29 76 views
1

剛登上asp.net船。存儲數據集的位置? - ASP.NET中的Session或Cache

我有一個asp.net頁面,最初顯示一些gridview與分頁(與數據集作爲其數據源)的數據。而且,有幾個文本框來執行插入或更新(不要問gridview本身的編輯/插入選項!!)。

我需要很少的關於存儲數據集的正確位置的指導。

我發佈簡化的代碼隱藏文件,它使用viewstate來存儲數據集,我不喜歡。

enter code here 

class xyx : Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
    GridBind(); 

    } 

} 
protected void InsertUpdateButton_Click(object sender, EventArgs e) 
{ 
1.perform insert or update data in the database 

2.GridBind(); 


} 
protected void GridView1_PageIndexChanged(object sender, EventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    GridView1.SelectedIndex = -1; 
    GridView1.DataSource = (DataSet)ViewState["DataSet"]; 
    GridView1.DataBind(); 

} 


private void GridBind() 
{ 
    DataSet ds = getDataFromDataBase(); 
    GridwView1.DataSource = ds; 
    GridView1.DataBind(); 
    ViewState["DataSet"] = ds; 

} 
} 

現在從視圖狀態分開,什麼是存儲數據集的最佳選擇?? ...

  1. 從數據庫每次

  2. 使用常見的會話變量會話獲得數據[「DataSet」]爲所有頁面上的所有數據集(我有一些其他頁面具有相同的場景)

  3. 使用高速緩存

我包括會話或緩存,因爲它可能是用戶可能只是查看數據而不是插入或更新。

此外,在按鈕單擊事件,而不是調用GridBind(),它是好的,如果我只是更新視圖狀態的數據集,而不是從數據庫中再次獲取數據?

像 -

DataSet ds = ViewSate["DataSet"] (or) Session["DataSet"] (or) Cache["DataSet"]; 
    (perform updations or insertions upon the dataset) 
    Session(or)Cache(or)ViewState["DataSet"] = ds; 
+0

可能的重複:http://stackoverflow.com/questions/12011416/should-i-use-session-cache-to-store-the-dataset-or-should-i-fetch-resh-from-the – Buzz

+0

數據是否需要緩存? – asawyer

+0

是的,數據集!!! .....挖苦? – user1247808

回答

5

一般:

  • 如果數據必須是最新的,每一個
  • 如果陳舊數據是OK的時間去取(或不經常更改) :
    • 如果每個用戶的數據不同,則存儲在Session
    • 如果t他的數據是爲所有用戶相同,使用CacheApplication

如果您想保存大量數據每用戶不使用會話 - 你可能會耗盡內存。

+0

所以,它可以存儲在會話中。但我聽到很多人說會話是邪惡的。 – user1247808

+0

@ user1247808 - 因爲會話是每個用戶_,所以只能在其中存儲少量數據。過度使用它(有大量數據)意味着您的服務器將以非常快的速度結束內存耗盡。 – Oded

+0

會話是更好的選擇,唯一的問題是它會在某個時間後過期 – LearningAsp

0

取決於許多條件,你應該採取的這些東西第一

  1. 的數據集中的記錄數的照顧。
  2. 用戶數量。

如果有一千條記錄,那麼只提取那些需要的記錄。用戶一些尋呼機控制。
here is an expample
爲了更好地使用分頁的。

相關問題