2010-11-28 17 views
12

que tienen una gran cantidad de solicitudes que leen mi archivo de configuración WebAlmacenamiento en memoria caché de WebConfigurationManager.AppSettings?

variable = WebConfigurationManager.AppSettings["BLAH"] 

hacer WebConfigurationManager.AppSettings lectura desde el disco cada vez, o se almacenan en caché en la memoria?

Si se lee desde el disco cada vez, entonces supongo que tendré que mover la variable a una variable estática para mejorar el rendimiento de mi aplicación.

Respuesta

17

Los ajustes de configuración se almacenan en memoria caché y web.config no se analiza cada vez que se llama a esta función.

+1

+1 Aquí hay un enlace para la documentación. [Estos miembros realizan operaciones de solo lectura, usan una única instancia en caché de la configuración y son multithread aware.] (Http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx#remarksToggle) – Craig

3

Estaba investigando este tema. Y es cierto que los ajustes de configuración están almacenados en la memoria caché.

Sin embargo, aún puede ver un beneficio de rendimiento al almacenar los valores en variables estáticas como usted menciona (y como se describe here). Esto se debe a que la colección AppSettings es NameValueCollection. Por lo tanto, cada vez que hace referencia a un AppSetting tiene que buscar en la colección que es una operación O (n).

Sin embargo, esto es probablemente una cosa rara que esto podría ser un cuello de botella de su aplicación. Pero uno podría imaginar un escenario con un ciclo cerrado haciendo referencia a un solo valor en AppSettings, donde la colección de AppSettings es muy grande. En ese caso, también podría almacenar en caché el valor de alguna manera, incluso si simplemente lo almacena en una variable local antes de iniciar el ciclo.

Cuestiones relacionadas