Подтвердить что ты не робот

Кэширование WebConfigurationManager.AppSettings?

У меня есть много запросов, которые читают мой файл веб-конфигурации

variable = WebConfigurationManager.AppSettings["BLAH"]

Do WebConfigurationManager.AppSettings читается с диска каждый раз или кэшируется в памяти?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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