有沒有人知道如果你打一個性能命中調用CloudConfigurationManager GetSetting方法?它是否重新解析了azure文件,或者它是否被緩存?不知道我是否應該添加自己的緩存/靜態變量來改進perf,通常稱爲連接字符串。CloudConfigurationManager GetSetting方法緩存嗎?
感謝
有沒有人知道如果你打一個性能命中調用CloudConfigurationManager GetSetting方法?它是否重新解析了azure文件,或者它是否被緩存?不知道我是否應該添加自己的緩存/靜態變量來改進perf,通常稱爲連接字符串。CloudConfigurationManager GetSetting方法緩存嗎?
感謝
的source可在github。
如果你看看源代碼,你可以看到它沒有做任何緩存,所以如果你看到性能問題,你可能想要實現自己的緩存。
的GetSetting
身體給出了一個簡單的回報:
value = GetValue("ServiceRuntime", name, GetServiceRuntimeSetting);
if (value == null)
{
value = GetValue("ConfigurationManager", name, n => ConfigurationManager.AppSettings[n]);
}
return value;
不,它沒有被緩存,如你所說,你就必須創建自己的性能改進緩存。
接受的答案可能不正確。
這是真的,CloudConfigurationManager
本身並沒有緩存,但是這是因爲它內部委託給ConfigurationManager
或WebConfigurationManager
,這做緩存值。
從MSDN:
對於
<appSettings>
和<connectionStrings>
,您在使用AppSettings和 的ConnectionStrings性能。這些方法執行只讀 操作,使用配置的單個緩存實例,並且是 多線程感知。
因此,即使您直接從CloudConfigurationManager
進行訪問,很可能也不會發生IO操作。
只需在使用反射器GetSetting方法偷看,讓我們知道:) –
哈。我發佈,以避免這樣做。這不是我的首要任務,但如果我沒有聽到任何人的消息,我可能會這樣做,然後回覆。 – Bryan
我不認爲它正在緩存價值。 – Guy