Asp.net 在本地存储大量数据

Asp.net 在本地存储大量数据,asp.net,memory-management,Asp.net,Memory Management,我对ASP.NET很有经验,但我的一些知识有点不可靠。我正在创建一个使用服务获取大部分数据的应用程序。然后我想用LINQ对它进行过滤,以满足我的需要。这些数据很少发生变化,但我知道有太多的数据无法用于会话 如何在内存中存储很少变化的大量数据?这是否适用于应用程序变量?您可以存储大量相当静态的数据: 在 在C#类的私有静态字段中。使用可以初始化静态字段的公共get属性包装变量。静态字段将需要在应用程序首次启动时初始化,并且在应用程序域被IIS回收的任何时候初始化 HttpContext.Cac

我对ASP.NET很有经验,但我的一些知识有点不可靠。我正在创建一个使用服务获取大部分数据的应用程序。然后我想用LINQ对它进行过滤,以满足我的需要。这些数据很少发生变化,但我知道有太多的数据无法用于会话


如何在内存中存储很少变化的大量数据?这是否适用于应用程序变量?

您可以存储大量相当静态的数据:

  • 在C#类的私有静态字段中。使用可以初始化静态字段的公共get属性包装变量。静态字段将需要在应用程序首次启动时初始化,并且在应用程序域被IIS回收的任何时候初始化
HttpContext.Cache

专业的

  • 可配置的缓存过期策略
  • 专为ASP.Net环境设计
犯人

  • 如果ASP.Net确定,则可能从缓存中调用
静态字段

专业的

  • 完成用户对缓存过期的控制
犯人

  • 任何缓存过期都必须显式编程。没有内置的过期支持

代替缓存源数据,考虑使用HTTP缓存通过ASP.NET输出缓存或MycCache来存储呈现的输出本身。ASP.NET OutputCache可以调整为在特定的ASP.NET资源上工作,如果需要,有许多方法可以显式地使缓存无效。有关更多信息,请参阅以下MSDN参考资料


这完全取决于您需要对该数据执行什么操作。使用LINQ对其进行过滤、显示,可能使用中继器,或者使用我已有的data=>XLS函数将其导出到XLS文件。只有在客户端之间共享数据时,缓存才是有利的。如果每个客户机都需要自己的版本,那么缓存并不比会话状态好。