Кэширование WebConfigurationManager.AppSettings? - PullRequest
13 голосов
/ 29 ноября 2010

У меня много запросов на чтение моего файла Web Config

variable = WebConfigurationManager.AppSettings["BLAH"]

Do WebConfigurationManager.AppSettings чтение с диска каждый раз, или оно кэшируется в памяти?с диска каждый раз, я думаю, мне нужно будет переместить переменную в статическую переменную, чтобы улучшить производительность моего приложения.

Ответы [ 2 ]

18 голосов
/ 29 ноября 2010

Настройки конфигурации кэшируются в памяти, и web.config не анализируется при каждом вызове этой функции.

4 голосов
/ 01 июля 2012

Я просто исследовал эту тему. И это правда, что настройки конфигурации кэшируются в памяти.

Однако вы все еще можете увидеть выигрыш в производительности, сохранив значения в статических переменных, как вы упомянули (и как описано здесь ). Это связано с тем, что коллекция AppSettings представляет собой NameValueCollection. И поэтому каждый раз, когда вы ссылаетесь на AppSetting, он должен искать коллекцию, которая является операцией O (n).

Хотя это, вероятно, редкая вещь, которая когда-либо была бы узким местом вашего приложения. Но можно представить сценарий с узким циклом, ссылающимся на одно значение в AppSettings, где коллекция AppSettings очень велика. В этом случае вы могли бы также кэшировать значение некоторым способом, даже если оно просто хранит его в локальной переменной перед началом цикла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...