除了视图状态之外,还有其他方法来存储数据源吗?

时间:2011-09-19 08:13:46

标签: asp.net datatable viewstate

如果数据库表中没有数据,我有一个以编程方式创建数据表的页面。我必须在回发期间的许多事件中使用此数据表。数据表可能包含数百条记录,并且可能有多个用户访问同一页面(当然,每个用户使用不同的数据源)。我将数据表存储在视图状态,但我担心这种做法会使页面更重。有没有其他方法来保留数据表跨回发。代码很长,所以我不能复制和过去它在这里。

使用session会再次使整个应用程序变得更重......那么它是否比viewstate更好?

5 个答案:

答案 0 :(得分:2)

您应该使用Session。此外,还可以使用ApplicationCache,但您必须在页面上生成并存储唯一键,以消除来自不同用户的请求之间可能存在的干扰。

答案 1 :(得分:1)

在您的情况下,视图状态可能变得非常大并且会损害页面加载性能。恕我直言,最好的办法是修改你处理回发事件的方式。

  • 如果多个用户需要相同的数据,请使用缓存。
  • 如果数据特定于每个zuser,则使用Session。但请记住,如果你在一个 聚集在环境中它有一些陷阱。
  • 每次用户回发到服务器时,都会从数据库加载数据。不需要在服务器上进行状态处理,但在进行网络往返时会丢失性能。

为了快速修复,我通常将View State存储在服务器上。请参阅此页面阅读相关内容...... http://aspguy.wordpress.com/2008/07/09/reducing-the-page-size-by-storing-viewstate-on-server/

答案 2 :(得分:0)

可能需要将数据存储在Cache对象中

答案 3 :(得分:0)

如果每个用户的数据表不同,您应该使用Session,或者可以使用Cache,假设为每个用户创建不同的Cache对象。

但是如果数据表非常大,那么将它存储在内存中而不是直接的数据库访问可能不是一个好主意。

答案 4 :(得分:0)

如果数据是用户特定的,那么您可以使用Session。但是,在进程外会话状态的情况下,您可能会遇到问题,因为需要对所有数据进行封送处理。来自会议商店。

否则,Cache是​​一个不错的选择,但您需要在典型的使用场景中选择缓存时段和到期策略(并且还需要优雅地处理缓存到期场景)。

另一种选择是将数据推送到临时文件中 - 但是,在这种情况下,您需要管理文件清理等。