缓存WebConfigurationManager.AppSettings?

时间:2010-11-28 21:47:47

标签: c# asp.net caching performance

我有很多请求读取我的Web配置文件

variable = WebConfigurationManager.AppSettings["BLAH"]

每次从磁盘读取WebConfigurationManager.AppSettings,还是将其缓存在内存中?

如果每次从磁盘读取,我想我需要将变量移动到静态变量,以提高我的应用程序性能。

2 个答案:

答案 0 :(得分:18)

配置设置缓存在内存中,每次调用此函数时都不会解析web.config。

答案 1 :(得分:4)

我刚刚研究这个主题。确实,配置设置缓存在内存中。

但是,您仍然可以通过将值存储在静态变量中来看到性能优势(如here所述)。这是因为AppSettings集合是NameValueCollection。因此,每次引用AppSetting时,都必须搜索O(n)操作的集合。

虽然这可能是一个罕见的事情,这将成为您的应用程序的瓶颈。但是可以想象一个具有紧密循环的场景引用AppSettings中的单个值,其中AppSettings集合非常大。在这种情况下,您也可以以某种方式缓存该值,即使它只是在开始循环之前将其存储在局部变量中。