使用Application缓存比使用Global.asax.cs静态变量更慢或更有问题吗?

时间:2011-08-19 20:50:54

标签: asp.net

我们有一个Webforms应用程序,它存储了整个应用程序中使用的一堆设置和术语映射(数百个)。

http://www.dotnetperls.com/global-variables-aspnet提出了这些断言:

  
    

Application []集合....可能会更慢,更难处理。

         

Application []对象在ASP.NET中效率低下。

         

这是推荐的吗?是的,而不仅仅是本文的作者。 Apress的专业ASP.NET和互联网上的许多网站都有这一点。效果很好

  

所以我想知道这些陈述是否属实。任何人都可以详细说明为什么使用Application会更慢或者如果你使用Application会出现什么样的问题?我有点假设任何问题或减速可能只会在生产负荷下出现,所以这就是为什么我要求的是真实的世界经验,而不仅仅是自我标杆。

我知道缓存有许多替代方法(HttpRuntime.Cache,memcached等),但我特别想知道是否需要返回并重写使用Application []的遗留代码。特别是如果我以任何方式招致性能损失,我会想要摆脱它。

1 个答案:

答案 0 :(得分:0)

如何保存这些设置?我会推荐web.config

如果您使用web.config来存储这些设置(如果它们是可以启动的固定位置的应用程序变量),那么就不需要Application变量。

我试图避开应用程序级变量,因为它们比Session变量更昂贵。

此外,web.config / app.config文件中的变量可以更改,而无需更改代码和/或重新编译项目。

应用程序类(全局变量)仅存在于ASP.NET中以帮助向后兼容经典ASP,您可以说它已被弃用。

您可以研究的另一件事是缓存您的设置,因此您并不总是从磁盘读取。