什么更好:每次创建新对象或将其存储在会话中?

时间:2012-10-10 06:23:43

标签: asp.net performance session object pagespeed

让我们举一个表适配器(类型化数据集)的例子

我在会话中存储数据集。但我不知道桌面适配器有什么用处。

一般情况下,与存储和从会话中获取相比,创建对象会严重影响性能吗?

4 个答案:

答案 0 :(得分:2)

我不确定,为什么要将它存储在会话中,但记住Session是Web开发中最昂贵的资源。

答案 1 :(得分:2)

这总是取决于你的要求。

如果数据集中的数据较少,并且您经常调用数据库以反复获取相同的数据而不是将其存储在会话中,那么如果所有用户的数据都相同,则应使用Cache因为它比会话更快。

但是,如果数据集中的数据比调用数据库更好,因为存储数据会降低应用程序的速度,即性能可能会下降很严重。

注意:这总是取决于数据大小以及从数据库查询数据的频率。

答案 2 :(得分:2)

这两种选择使用不同的资源。

创建对象的新实例使用时间。在会话中存储实例会使用内存。

如果您每次需要时都创建一个新实例,它只会在您使用它时占用内存。如果你将它存储在会话中,它将一直占用内存,如果你不从会话中删除它,它甚至会在用户离开后占用内存一段时间。

如果您考虑将表适配器连接到数据库,同时将其保留在会话中,那么这也会耗尽与数据库的连接,这是一种更加有限的资源。这将严重限制网站可以处理的用户数量。

通常,您应该只将事物存储在实际具有状态的会话中,即确实存在您需要保留的数据的事物。大多数对象花费的时间很少,因此没有必要保留它们以避免再次创建它们。

答案 3 :(得分:1)

这一切都取决于您的要求您想要做什么以及您拥有多少数据。

根据我的会话不是存储数据集的好选项,因为一旦它占用内存将无法使用。会话有一些限制,如果你的会话已经过期然后它可以抛出null的错误,你将需要不时刷新它。

当您需要使用大数据进行数据集来调用数据库时,情况要好得多,因为存储数据会降低您的应用程序速度,即性能可能会严重下降。您可以在sql server中使用索引选项来快速返回数据。