C# 保留ASP.net网页的全局数据
我目前正在一个大型网站上工作,这个网站非常动态,因此需要在内存中几乎永久地存储大量信息(例如签出的配置设置,或用于实现菜单结构的树) 此信息不是特定于会话的,它对于使用网站的每个线程都是一致的C# 保留ASP.net网页的全局数据,c#,asp.net,memory-management,global,C#,Asp.net,Memory Management,Global,我目前正在一个大型网站上工作,这个网站非常动态,因此需要在内存中几乎永久地存储大量信息(例如签出的配置设置,或用于实现菜单结构的树) 此信息不是特定于会话的,它对于使用网站的每个线程都是一致的 在ASP中全局保存此数据的最佳方法是什么,以便在需要时可以访问它,而不是在每次使用时重新加载?web.config中的任何AppSettings都是(也就是说,它们不是每次需要使用时都从XML中读取的) 您也可以手动操作 编辑:更好的链接 不清楚您的信息是否特定于会话……如果是,请使用ASP会话对
在ASP中全局保存此数据的最佳方法是什么,以便在需要时可以访问它,而不是在每次使用时重新加载?web.config中的任何
AppSettings
都是(也就是说,它们不是每次需要使用时都从XML中读取的)
您也可以手动操作
编辑:更好的链接
- 不清楚您的信息是否特定于会话……如果是,请使用ASP会话对象。根据您对规模的描述,您可能希望查看在Sql Server中存储状态:
这是101方法。如果您正在寻找更强大的东西,请查看memcached(读作memcachedee):
这是Facebook和Twitter等应用程序使用的系统
祝你好运 我通常在应用程序对象中保留类似的内容。我认为使用ASP.NET缓存功能是一个不错的选择。除了John的回答之外,您还可以使用Microsoft的模式与实践团队。如果页面相互依赖并且它们相互发布,您可以使用页面的请求对象。可能不是您想要的答案,但肯定是内存中最小的一个。这是一个探索保留应用程序状态的不同方法的好视频。
它在应用程序对象上画笔,该对象对于整个应用程序、所有用户都是全局的,并向您展示如何创建命中计数器(显然,您可以存储对象,而不是存储整数)。如果您需要进行更改,您确实需要使用并发锁,我不确定它如何处理大量数据,因为我从来没有在那里保留过那么多数据。我在过去也遇到过同样的情况,发现接口是最具伸缩性的解决方案。应用程序缓存可能是今天的答案,但它是否可以扩展以满足您的需要
如果您需要扩大规模,您可能会发现cookie或某种类型的临时数据库存储是关键。只需在界面中添加一个新方法,并将界面设置为从web.config中选择“模式”。AppSettings就我所知并不真正合适,我说的是存储诸如产品集合->实际对象之类的东西。然后你可能会想要我回答的第二部分。谁对此投了反对票,谁能解释一下为什么使用缓存是个坏主意吗?决定使用应用程序缓存,似乎可以做到这一点!你能不能检查一下这个答案,也许是一些简短的示例代码,或者是一个不错的教程的链接?