存储数据集的位置? - ASP.NET中的会话或缓存

时间:2012-10-29 11:53:57

标签: asp.net session caching

刚刚登上了asp.net的船。

我有一个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;

}
}

现在除了viewstate之外,存储数据集的最佳选择是什么?...

  1. 每次从数据库中获取数据

  2. 对所有页面中的所有数据集使用公共会话变量Session [“DataSet”](我有一些其他页面具有相同的方案)

  3. 使用缓存

  4. 我包含了会话或缓存,因为用户可能只是在查看数据而不是插入或更新。

    此外,在Button click事件中,而不是调用GridBind(),如果我刚刚更新了viewstate中的数据集而不是从数据库中再次获取数据,那么可以吗?

    喜欢 -

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

2 个答案:

答案 0 :(得分:5)

一般而言:

  • 如果数据必须是最新的,请每次都抓取
  • 如果陈旧数据正常(或不经常更改):
    • 如果每位用户的数据不同,请存储在Session
    • 如果所有用户的数据都是相同,请使用CacheApplication

如果您希望为每个用户存储大量数据,请不要使用会话 - 您可能会耗尽内存。

答案 1 :(得分:0)

取决于许多情况,你应该先处理这些事情

  1. 数据集中的记录数。
  2. 用户数量。
  3. 如果有数千条记录,则只获取所需的记录。用户一些寻呼机控制。
    here is an expample
    为了更好地使用分页。