ASP.NET: Где и как кэшируется web.config? - PullRequest
7 голосов
/ 08 ноября 2008

Я где-то читал в документации Microsoft, что содержимое ASP.NET web.config кэшируется . Если это так, , где это кэшируется - в памяти или на диске ?

И еще один вопрос: есть ли у меня какие-то соображения по поводу производительности, если мне нужен интенсивный доступ к web.config?

Ответы [ 6 ]

8 голосов
/ 08 ноября 2008

Кэшируется в памяти, кэширование на диске не имеет никакого смысла, оно уже на диске.

Прежде всего в ASP.NET необходимо обеспечить доступ к разделам конфигурации с помощью метода GetSection объекта HttpContext (при этом используются кэшированные копии, управляемые ASP.NET).

Производительность доступа к значениям конфигурации является функцией внутренней реализации объекта Section (объекта, возвращаемого GetSection). ConfigurationSection может просто действовать как оболочка для узла DOM, который он может читать при каждом запросе свойства. OTH может внутренне кэшировать значение и следить за изменениями.

Я бы посоветовал сохранить ваш код простым и просто обращаться к нужным значениям через GetSection, а не пытаться хранить их копии где-либо в другом месте, но непременно сохраняйте ссылку на объект, возвращаемый GetSection, на время запрос, если вы собираетесь извлечь из него несколько значений.

5 голосов
/ 29 мая 2014

В ASP.NET раздел кэшируется в память после 1-го доступа :

ASP.NET перезапускает приложение, если имеются обновления в файле web.config.

1 голос
/ 08 ноября 2008

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

1 голос
/ 08 ноября 2008

Я думаю, что web.config кэшируется в памяти (в экземплярах объектов из System.Web.Configuration). Они перезагружаются при изменении файла .config (и, следовательно, при перезагрузке веб-приложения).

Удар по этим объектам вряд ли даст вам узкое место в производительности. Но если вам нужно выполнить синтаксический анализ и т. Д., Возможно, вы захотите удержать проанализированные объекты.

[Дополнительно] Я рекомендую (по крайней мере, думаю) создавать статические свойства в файле global.asax.cs для ваших настроек приложений. Вы можете создать эти свойства в методе application_start и использовать их в своем веб-приложении. Это не позволяет вам использовать жестко запрограммированные строки (ключи конфигурации) в вашем коде.

0 голосов
/ 19 июля 2011

В ASP .NET есть 2 типа кэширования.

  1. Кэширование приложения - внутренний кеш объекта на основе ограничение памяти, ограничения по времени и другие зависимости

  2. Кэширование вывода страницы - отображаемый кеш страницы на сервере. Оба из них основаны на памяти; не диск.

0 голосов
/ 05 ноября 2010

Мой совет - использовать ее как любую другую переменную по той простой причине, что данные кэшируются. Если вы создаете статические переменные в global.asax, вы заставляете себя писать больше кода. Независимо от того, насколько вы спланированы, весьма вероятно, что вы часто будете добавлять переменные в appconfig на этапе разработки.

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