在哪里存储数据集?-ASP.NET中的会话或缓存

在哪里存储数据集?-ASP.NET中的会话或缓存,asp.net,session,caching,Asp.net,Session,Caching,刚登上asp.net船 我有一个asp.net页面,它最初在gridview中显示一些数据,并使用数据集作为其数据源进行分页。而且,很少有文本框可以执行插入或更新。不要询问gridview本身中的编辑/插入选项 关于存储数据集的正确位置,我需要一些指导 我发布了一个简化的代码隐藏文件,它使用viewstate来存储数据集,我不喜欢它 enter code here class xyx : Page { protected void Page_Load(object sender, EventA

刚登上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,存储数据集的最佳选择是什么

每次都从数据库中获取数据

对所有页面上的所有数据集使用公共会话变量Session[DataSet]。我还有一些其他页面具有相同的场景

使用缓存

我包括会话或缓存,因为用户可能只是查看数据,而不是插入或更新数据

另外,在按钮单击事件中,而不是调用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;
一般来说:

如果数据必须是最新的,则每次都要获取它 如果过时数据正常或不经常更改: 如果每个用户的数据不同,请存储在会话中 如果所有用户的数据相同,请使用缓存或应用程序 如果您希望为每个用户存储大量数据,请不要使用会话-您可能会耗尽内存

一般来说:

如果数据必须是最新的,则每次都要获取它 如果过时数据正常或不经常更改: 如果每个用户的数据不同,请存储在会话中 如果所有用户的数据相同,请使用缓存或应用程序
如果您希望为每个用户存储大量数据,请不要使用会话-您可能会耗尽内存

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

数据集中的记录数。 用户数。 如果有数千条记录,则只获取所需的记录。用户可以使用一些寻呼机控件。
为了更好地使用分页功能。

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

数据集中的记录数。 用户数。 如果有数千条记录,则只获取所需的记录。用户可以使用一些寻呼机控件。

为了更好地使用分页功能。

可能重复:是需要缓存的数据吗?是的,数据集!!!。。。。。讽刺???@buzz-hmm可能是,但我给出了一个场景。如果我得到的答案是简短的enuf,这没关系,因为我给出了场景和案例。enuf让开发人员使用ViewState可能重复:是需要缓存的数据吗?是的,数据集!!!。。。。。讽刺???@buzz-hmm可能是,但我给出了一个场景。如果我得到的答案是简短的enuf,这没关系,因为我给出了scenario和cases.enuf让开发人员使用ViewState,所以可以存储在会话中。但是我听到很多人说会话是邪恶的。@user1247808-因为会话是每个用户的,所以您应该只在其中存储少量数据。对大量数据过度使用它意味着您的服务器将很快耗尽内存。会话是更好的选择,唯一的问题是它将在sometime@user1247808:Oded未表示可以将其存储在sessionor缓存中。他说,如果它不经常改变也没关系,而且每个用户都不一样。但是,当你在内存中存储大数据集时,你的应用程序不能很好地扩展。考虑到未来用户的数量将会增加。您还必须自己提供锁定功能。不久前我问了一个相关的问题:@ankitkulshreshta-你在做假设。这可能更好,具体取决于使用场景。所以,可以在会话中存储。但是我听到很多人说会话是邪恶的。@user1247808-因为会话是每个用户的,所以您应该只在其中存储少量数据。对大量数据过度使用它意味着您的服务器将很快耗尽内存。会话是更好的选择,唯一的问题是它将在sometime@user1247808:Oded未表示可以将其存储在sessionor缓存中。他说,如果它不经常改变也没关系,而且每个用户都不一样。但是,当你在内存中存储大数据集时,你的应用程序不能很好地扩展。考虑到未来用户的数量将会增加。您还必须自己提供锁定功能。不久前我问了一个相关的问题:@ankitkulshreshta-你在做假设。这可能更好,具体取决于使用场景。