在会话中存储DataSet

时间:2013-08-21 07:45:41

标签: asp.net session datatable

我已经阅读了很多关于在session / viewstate中存储datatable / set的内容,并且普遍的共识似乎是它不是一个好主意,因为它减慢了网页的速度..但它有它的优点.. 现在,我建立了一个允许用户创建/管理/主持测验的网站。我想从数据库中检索一定数量的问题(将定义问题的值)并将其存储在会话中维护的数据表中...最大。没有问题应该是120 .. 所以要存储在会话中的总数据= 120个问题+选项+ correctanswer;以及其他一些小问题,如候选人和用户数据的分数

我的问题是:考虑到最多的问题数量为120,这么多的数据是否会严重影响我的网页的性能,如果有的话,请通过告诉替代方法帮助我...... thx。

2 个答案:

答案 0 :(得分:0)

视图状态肯定不是存储此类数据的好地方,因为数据集将被序列化为(非常长的)字符串并随每个请求发送到客户端。一般来说,我会尽可能避免查看状态(在我看来,它有更多的缺点而不是优点)。

只要您使用进程内会话模式,就可以将数据集存储在会话中。在这种情况下,会话数据在内存中维护,这种方法的唯一缺点(正如我所看到的那样,没有涉及到您的任务的具体细节)是有时您可能会考虑释放当前不需要的内存。如果您使用SQL Server存储会话数据,我会选择另一个存储,因为在这种情况下序列化/反序列化您的数据集可能会对应用程序性能产生影响。

答案 1 :(得分:0)

这取决于您希望在应用程序上设置限制的位置。

将数据存储在内存中会将应用程序限制为一定数量的并发用户。

每次从数据库获取数据将减少应用程序每秒可处理的请求数。

与任何优化一样,您应该只在知道需要时进行优化,因此我建议您只从数据库中获取数据,并在实际需要时添加缓存。