繁体   English   中英

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

[英]Storing large amounts of data in the Asp.net session

我正在编写一个C#/ asp.net页面,当前正在页面加载时从数据库中拉出大量数据(例如100000 Datetime int对),但是每次页面加载都加载相同的数据似乎有点愚蠢。 我已经考虑过在会话中存储此值,但是多个浏览器选项卡似乎引起了问题。

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

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

在会话中存储100k个int对的问题在于它可能适用于1个或2个,甚至可能有十几个用户。 但是,当您的网站开始流行时,它根本无法扩展。 您的服务器将无法存储500,000个用户会话,每个会话分别具有10万个整数对。 您很快就会用完内存

如果每个用户该数据都是唯一的,则会话可能是缓存数据的有效位置。 但是,如果执行此操作,则应注意添加到会话中的内容将保留在那里,需要将其删除。 另外,由于每个用户会话存储大量数据,因此会消耗大量服务器内存。 这就是Steve在回答问题时所要解决的问题-您很容易发现自己的空间不足,因为多个用户拥有大量会话数据

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

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

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

关于使用缓存代替会话变量该怎么办: http : //msdn.microsoft.com/zh-cn/library/aa478965.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM