2010-11-28 34 views
12

我有很多,上面寫着我的Web配置文件緩存WebConfigurationManager.AppSettings?

variable = WebConfigurationManager.AppSettings["BLAH"] 

從磁盤每次做WebConfigurationManager.AppSettings讀,或者是它在內存中緩存的請求?

如果每次從磁盤讀取它,我想我需要將該變量移動到一個靜態變量,以提高我的應用程序性能。

回答

17

配置設置緩存在內存中,每次調用此函數時都不會解析web.config。

+1

+1這是鏈接到文檔。 [這些成員執行只讀操作,使用配置的單個緩存實例,並感知多線程。](http://msdn.microsoft.com/zh-cn/library/system.configuration.configurationmanager.aspx#remarksToggle ) – Craig 2012-01-04 14:33:13

3

我只是在研究這個問題。確實將配置設置緩存在內存中。

但是,您仍然可以通過將值存儲在靜態變量中(如上所述)(如here所述)來看到性能優勢。這是因爲AppSettings集合是NameValueCollection。所以每次你引用一個AppSetting時,它必須搜索一個O(n)操作的集合。

儘管這可能是一個罕見的事情,這將是您的應用程序的瓶頸。但是可以設想一個在AppSettings中引用單個值的緊密循環的場景,其中AppSettings集合非常大。在這種情況下,您可能會以某種方式緩存該值,即使它只是在開始循環之前將其存儲在局部變量中。