【问题标题】:Storing DataSet in Session在会话中存储数据集
【发布时间】:2013-08-21 07:45:40
【问题描述】:

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

我的问题是:考虑到最大问题数为 120,这么多数据是否会严重影响我页面的性能,如果是,请告诉我另一种方法...谢谢。

【问题讨论】:

  • 为什么需要在一个会话中存储120个问题+选项+答案?为什么您不将值存储在数据库中并在需要时检索它们?如果你有一些性能问题,这意味着你做错了什么,使用 session 进行存储总是一个坏主意。它是一种存储当前状态的方法。这不是数据存储!顺便说一句,retrieve certain number of questions from database(value of questions will be defined) and store it in a datatable which is maintained in session 什么??

标签: asp.net session datatable


【解决方案1】:

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

只要您使用进程内会话模式,将数据集存储在会话中应该没问题。在这种情况下,会话数据保存在内存中,这种方法的唯一缺点(我认为它没有详细说明您的任务)是有时您可能会考虑释放目前不需要的内存。如果您使用 SQL Server 存储会话数据,我会选择另一个存储,因为在这种情况下对您的数据集进行序列化/反序列化可能会对应用程序性能产生影响。

【讨论】:

    【解决方案2】:

    这取决于您想在应用程序的哪个位置设置限制。

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

    每次从数据库中获取数据会降低应用程序每秒可以处理的请求数。

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

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 1970-01-01
      • 2014-12-30
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 2021-10-23
      • 2013-06-10
      相关资源
      最近更新 更多