在Asp.net会话中存储大量数据

时间:2013-03-05 13:25:20

标签: c# asp.net session

我正在编写一个C#/ asp.net页面,目前我在页面加载时从数据库中提取了大量数据(比如100 000个Datetime int对),但每个页面加载时加载相同的数据似乎有点愚蠢。我考虑过将这个值存储在会话中,但是多个浏览器选项卡似乎都会导致问题。

是否有更好的方法来存储这些值,如果我需要支持多个浏览器标签,是否使用适当的会话?

4 个答案:

答案 0 :(得分:8)

您的会话占用了大量服务器内存。你可以将你的会话存储在一个数据库中(因为这就是你想要首先将它们存储在会话中的原因),但是在行之间进行读取(为什么每个访问者需要100,000个唯一的日期时间对?)我认为您应该考虑将这些值存储在缓存中(如果它们对所有用户都相同)。

在会话中存储100k int对的问题是它可能适用于1或2,甚至可能有十几个用户。但是,当您的网站受欢迎时,它根本不具备可扩展性。您的服务器将无法存储每个100k int对的500,000个用户会话。 你很快就会耗尽内存

答案 1 :(得分:2)

如果此数据对每个用户而言是唯一的,则会话可能是缓存数据的有效位置。虽然,如果你这样做,那么你应该知道你添加到会话的东西留在那里,需要删除。此外,由于每个用户会话存储大量数据,因此消耗大量服务器内存。这就是史蒂夫在他的回答中得到的结果 - 你可能很容易发现自己没有多个用户拥有大量会话数据的空间

如果每个用户的数据不同,那么cache就是答案!

答案 2 :(得分:0)

会议可能变得笨拙。您可能需要考虑使用母版页来包装页面。然后,您可以在母版中加载一次数据,并使其在页面中保持可用,或者放置在页面上的隐藏对象(例如文字)中能够访问。

为什么你需要页面之间的所有对?

答案 3 :(得分:0)

如何使用缓存而不是会话变量:http://msdn.microsoft.com/en-us/library/aa478965.aspx

相关问题