Microsoft Caché de salida ASP.NET proporciona funcionalidad para almacenar en caché el contenido procesado de las páginas ASP.NET o los controles de usuario durante un período específico. Esto permite que su aplicación ASP.NET atienda todas las solicitudes subsiguientes desde el caché en lugar de volver a renderizar y volver a ejecutar una página.
Añades el <% @OutputCache%> directiva en la página para usar ASP.NET Output Cache.
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
El almacenamiento en caché de resultados de ASP.NET es una característica muy útil, especialmente para situaciones en las que se accede a una página con más frecuencia de lo que cambia y se sirve desde la memoria caché. Esto mejora el rendimiento de la aplicación al evitar las reejecuciones de la página y también al reducir los costosos viajes a la base de datos, especialmente cuando la página involucra muchas operaciones pesadas de la base de datos. Esto también mejora la escalabilidad de la aplicación porque la base de datos generalmente se convierte en un cuello de botella de escalabilidad cuando hay millones de páginas y solicitudes relacionadas con operaciones de base de datos.
Problemas con la caché de resultados de ASP.NET en el entorno de Microsoft Azure
Cuando usa la caché de salida en Microsoft Azure, la salida de la página se almacena como InProc dentro de su rol web de Microsoft Azure de forma predeterminada. El primer problema con esto es que lo limita a la memoria que está disponible en su instancia de Web Role y esto puede crear un problema de falta de memoria cuando almacena en caché una gran cantidad de datos de salida de la página. Otro problema es que su aplicación se ejecuta en varias instancias de roles web de Microsoft Azure con equilibrio de carga. La siguiente solicitud podría ir a otra instancia de rol web, lo que también crea una nueva copia de los datos de la caché de resultados de ASP.NET en esta instancia. Estas copias redundantes de los resultados de la página en cada instancia de Web Role consumen mucha memoria adicional.
Las instancias de roles web de Microsoft Azure también se reciclan con bastante frecuencia para mantenimiento y aplicación de parches. Cuando esto sucede, todos los resultados de la página se pierden y tendrá que volver a ejecutar todas las páginas para volver a llenar la caché de resultados de la página, lo que tiene un impacto negativo en el rendimiento de su aplicación de Azure.
¿Cómo resolver problemas de almacenamiento en caché de resultados en Microsoft Azure?
Una forma de resolver todos estos problemas en Microsoft Azure es usar una memoria caché distribuida, que se ejecuta fuera del proceso y es un almacén común para todas las instancias de roles web de Microsoft Azure. ASP.NET 4.0 ha introducido un punto de extensibilidad que ayuda a los desarrolladores a usar cualquier caché distribuida de su elección como su almacén de caché de salida ASP.NET.
Todos los roles web de Microsoft Azure comparten la memoria caché distribuida para los resultados de la página, por lo que no se realizan copias redundantes dentro de las instancias de roles web individuales. Los roles web de Microsoft Azure se vuelven puramente sin estado, por lo que los datos nunca se pierden cuando se reciclan los roles web. Puede almacenar en caché una gran cantidad de datos en caché distribuida al agrupar los recursos de memoria de todos los servidores de caché juntos. Además, la caché distribuida reduce la carga en su base de datos porque no tiene que pasar por ejecuciones de página que involucren llamadas a la base de datos en cada instancia de rol web de Microsoft Azure por separado.
NCache para Azure es un caché distribuida en memoria para .NET aplicaciones desplegadas en la nube de Microsoft Azure. NCache para Azure ha implementado el proveedor de caché de salida ASP.NET que puede usar para almacenar la salida de la página ASP.NET y resolver todos los problemas mencionados anteriormente. Además, desplegar NCache como herramienta de edición del Servicio de almacenamiento en caché de Azure proporciona confiabilidad de datos con replicación y mejora la escalabilidad de la aplicación.
¿Cómo Usar? NCache para el proveedor de caché de salida de Azure ASP.NET
Puedes usar NCache para Azure para el almacenamiento en caché de resultados en ASP.NET como se muestra a continuación sin ningún cambio de código en su aplicación de Microsoft Azure.
Paso 1: Agregar referencia de NCache para el ensamblado del proveedor de Azure Output Cache.
Archivo: web.config
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
Paso 2: Registro NCache para el proveedor de caché de salida de Azure enconfiguración> sección y proporcione la configuración de caché.
Archivo: web.config
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
Paso 3: Agregue la directiva ASP.NET Output Cache en la página que desea almacenar en caché.
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
Documentación: Uso del almacenamiento en caché de resultados de ASP.NET con NCache
NCache para características de caché de salida de Azure ASP.NET
NCache para Azure proporciona un amplio conjunto de funciones para almacenar en caché y administrar el almacenamiento en caché de salida de Microsoft Azure. A continuación se muestra una lista de ellos:
- Especifique la duración de la salida de página: NCache para Azure le permite especificar una duración durante la cual desea almacenar en caché la salida de la página ASP.NET.
- Almacene en caché diferentes versiones de una página: NCache para Azure le permite almacenar en caché diferentes versiones de la página según las diversas directivas de caché de salida de ASP.NET, como VaryByParam, VaryByCustom, VaryByControl. Otra versión de la salida de la página se almacena en caché distribuida si se recibe un parámetro diferente para una solicitud de página.
- Almacene en caché diferentes partes de una página: También puede especificar solo partes de la página en lugar de almacenar en caché toda la página. Esto es para situaciones en las que almacena en caché solo la parte estática de la página y deja la parte dinámica que se procesa en tiempo de ejecución.
- Implemente ganchos personalizados para la caché de salida de ASP.NET: NCache para Azure le permite implementar y registrar sus ganchos personalizados (interfaz) para la salida de la página. Esto es para adjuntar algunos atributos extendidos a los resultados de su página, como NCache para dependencias de bases de datos de Azure, etiquetas, grupos, etc.
Conclusión
Como ha visto, la caché distribuida le permite almacenar en caché los resultados de la página ASP.NET, lo que resuelve los problemas de su aplicación con varios roles web de Azure con equilibrio de carga. NCache es un proveedor de Azure ASP.NET Output Cache que ayuda a mejorar la escalabilidad y la confiabilidad del rendimiento de las aplicaciones ASP.NET.