在Session中存储datatable与在Cache中存储datatable有什么区别?优点和缺点是什么?
因此,如果它是一个简单的搜索页面,它在datatable中返回结果并将其绑定到网格视图。如果用户'a‘搜索和用户'b’搜索,最好将其存储在会话中,因为每个用户最有可能有不同的结果,或者我仍然可以将他们的每个搜索存储在cache中,或者这没有意义,因为只有一个Cache。我猜基本上我想说的是缓存是否会被覆盖。
发布于 2009-01-09 16:14:16
一个重要的区别是,缓存中的项可以在指定的时间后过期(将从缓存中删除)。放入会话中的项将一直保留在那里,直到会话结束。
当可用内存量变小时,ASP.NET还可以从缓存中删除项目。
另一个区别是:会话状态可以保持在外部(状态服务器、SQL服务器),并在web应用程序的多个实例之间共享(用于负载平衡)。缓存的情况并非如此。
除了这些区别(正如其他人所指出的):会话是按用户/会话的,而缓存是按应用程序的。
发布于 2009-01-09 16:10:54
Cache在Application作用域中,其目的是减少获取数据的次数。会话位于用户的会话作用域中,目的是提供特定的用户状态。
发布于 2009-01-09 16:12:11
这取决于你如何为ASP.NET配置会话。你是在数据库中存储会话还是在内存中存储会话?如果在内存中,您使用的是单独的服务器,还是使用当前的for服务器进行会话?
根据如何为您设置内容,当您使用datatable之类的东西时,可能会影响性能,这告诉我您可能正在存储大量数据。
此外,如果用户不接受cookie并且您已将ASP.NET设置为无cookie模式,则每个用户都会存储会话,并通过存储在会话cookie中或网址上的会话票证来检索会话。您缓存的任何内容都将在应用程序级别缓存,并可供所有用户会话使用,这些用户会话可能是您想要的,也可能不是。
https://stackoverflow.com/questions/428634
复制相似问题