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

本文关键字:数据 存储 Asp net 会话 | 更新日期: 2023-09-27 18:02:13

我正在写一个c#/asp.net页面,目前有很多数据(比如10万个Datetime int对),我在页面加载时从数据库中取出,但是每次加载相同的数据似乎有点傻。我考虑过在会话中存储此值,但多个浏览器选项卡似乎会导致问题。

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

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

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

在会话中存储100k int对的问题是,它可能只适用于1或2个用户,甚至可能适用于12个用户。但是当你的网站变得很受欢迎的时候,它就没有可扩展性了。您的服务器将无法存储50万个用户会话,每个会话有10万个整数对。内存会很快用完

如果该数据在每个用户中是唯一的,那么会话可能是缓存数据的有效位置。但是,如果你这样做,那么你应该意识到你添加到会话的东西会留在那里,需要删除。另外,由于每个用户会话存储大量数据,因此会消耗大量服务器内存。这就是Steve想要表达的意思——你很容易就会发现自己在多个用户拥有大量会话数据的情况下用光了空间

如果每个用户的数据不变化,那么缓存就是答案!

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

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

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