Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保留ASP.net网页的全局数据_C#_Asp.net_Memory Management_Global - Fatal编程技术网

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就我所知并不真正合适,我说的是存储诸如产品集合->实际对象之类的东西。然后你可能会想要我回答的第二部分。谁对此投了反对票,谁能解释一下为什么使用缓存是个坏主意吗?决定使用应用程序缓存,似乎可以做到这一点!你能不能检查一下这个答案,也许是一些简短的示例代码,或者是一个不错的教程的链接?