Asp.net 除了视图状态,还有其他方法存储数据源吗?
我有一个页面,如果数据不在数据库表中,则在该页面上以编程方式创建数据表。在回发期间,我必须在许多事件中使用此数据表。数据表可能包含数百条记录,并且可能有多个用户访问同一页面(当然每个用户使用不同的数据源)。我正在视图状态下存储数据表,但我担心这种做法会使页面更重。是否有其他方法可以跨回发保留数据表。代码很长,因此我无法在这里复制并通过它Asp.net 除了视图状态,还有其他方法存储数据源吗?,asp.net,datatable,viewstate,Asp.net,Datatable,Viewstate,我有一个页面,如果数据不在数据库表中,则在该页面上以编程方式创建数据表。在回发期间,我必须在许多事件中使用此数据表。数据表可能包含数百条记录,并且可能有多个用户访问同一页面(当然每个用户使用不同的数据源)。我正在视图状态下存储数据表,但我担心这种做法会使页面更重。是否有其他方法可以跨回发保留数据表。代码很长,因此我无法在这里复制并通过它 使用session将再次使整个应用程序变得更重…那么它比viewstate更好吗 可能需要将数据存储在缓存对象中如果每个用户的数据表不同,则应使用会话,或者可以
使用session将再次使整个应用程序变得更重…那么它比viewstate更好吗 可能需要将数据存储在缓存对象中如果每个用户的数据表不同,则应使用
会话
,或者可以使用缓存
,假定为每个用户创建不同的缓存对象
但是,如果数据表非常大,那么将其存储在内存中而不是直接访问数据库可能不是一个好主意。您应该使用
会话。也可以使用应用程序
或缓存
,但您必须在页面上生成并存储一个唯一的键,以消除来自不同用户的请求之间可能存在的干扰。在您的情况下,视图状态可能会变得非常大,并会影响页面加载性能。我想最好的办法是改变你处理事后事件的方式
- 如果多个用户需要相同的数据,请使用缓存李>
- 如果数据特定于每个zuser,则使用会话。但请记住,如果你处于
在集群环境中,它有一些陷阱李>
- 每次用户发回服务器时,从数据库加载数据。不需要在服务器上进行状态处理,但在进行网络往返时会降低性能李>
为了快速修复,我通常将视图状态存储在服务器上。请参阅本页以了解相关信息 如果数据是特定于用户的,则可以使用会话。但是,在进程外会话状态下,您可能会遇到问题,因为所有这些数据都需要从会话存储区来回封送
否则,缓存是一个不错的选择,但您需要在典型的使用场景中选择缓存周期和过期策略(还需要优雅地处理缓存过期场景)
另一种选择是将数据推送到临时文件中,但是,在这种情况下,您需要管理文件清理等。会话对象按用户定义。但在这个问题上,我认为在不同的会话中使用相同的数据。这个问题指出:“(当然,每个用户的数据源不同)”