c# asp.net caching httpruntime.cache

c# - HttpRuntime.Cache[] versus Aplicación



asp.net caching (3)

La aplicación está en desuso por la memoria caché. Si necesita algo con el alcance de la aplicación, entonces debe crearlo como miembro estático de una clase o usar el Caché. Si desea ir a la ruta de Caché pero no desea que caduque nunca, debe usar la opción CacheItemPriority.NotRemovable cuando inserta el valor en el caché. Tenga en cuenta que es posible utilizar esta prioridad y seguir usando dependencias de caché, por ejemplo, si sus datos dependieron de algo en el sistema de archivos. Todo lo que hace CacheItemPriority es evitar que HttpRuntime.Cache borre de manera inteligente el elemento cuando siente la presión de la memoria y usa su algoritmo de Mínimo uso recientemente para purgar elementos que no están viendo mucho uso.

Sé que la mayoría de la gente recomienda usar HttpRuntime.Cache porque tiene más flexibilidad ... etc. Pero, ¿y si el objeto persiste en la memoria caché durante toda la vida de la aplicación? ¿Hay algún inconveniente importante al usar el objeto Application [] para almacenar en caché las cosas?


Use la memoria caché cuando desee que los elementos expiren automáticamente o se reclamen cuando la memoria es escasa. De lo contrario, utilice variables estáticas si puede, ya que producirán un mejor rendimiento y luego buscarán en la colección ApplicationState. No estoy exactamente seguro de cuál sería el caso cuando usar ApplicationState, pero seguro que habrá algunos.


Siempre que no abuse del estado de la aplicación, no veo ningún problema en usarlo para los elementos que no desea caducar. Alternativamente, probablemente usaría una variable estática cerca del código que la usa. De esa manera evitas pasar por HttpApplicationState y luego te obligan a tener una referencia a System.Web si quiero acceder a mis datos.

Pero asegúrese de pensar cómo usar los objetos que almacena en HttpApplicationState . Si se trata de un conjunto de datos al que agrega elementos para cada solicitud, en algún momento termina consumiendo demasiada memoria en el servidor web. Lo mismo podría suceder si continúa agregando elementos a HttpApplicationState cuando procesa las solicitudes, en algún momento obligará a la aplicación a reiniciarse.

Esa es probablemente la ventaja de usar Cache en su situación. El consumo de grandes cantidades de memoria no es tan fatal porque permite que ASP.NET libere los elementos en su caché cuando la memoria escasea.