有没有人知道如果你打一个性能命中调用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