Mejores prácticas en caché en ASP.Net

El almacenamiento en caché es una estrategia de administración de estado que a menudo se adopta en ASP.Net para mejorar el rendimiento de la aplicación al minimizar el consumo de recursos en su sistema. Si se usa correctamente, puede mejorar considerablemente el rendimiento de su aplicación al almacenar la página wWb en su totalidad o parcialmente, o incluso almacenar los datos de la aplicación a través de las solicitudes HTTP. El almacenamiento en caché permite que la página web se procese más rápido y el uso adecuado del almacenamiento en caché minimiza o reduce los accesos a la base de datos o el consumo de recursos del servidor.

El almacenamiento en caché en ASP.Net es de los siguientes tres tipos:

  1. almacenamiento en caché de salida de página
  2. almacenamiento en caché de fragmentos de página
  3. almacenamiento en caché de datos

Almacenamiento en caché de salida de página

Esta es una forma de almacenamiento en caché en ASP.Net que almacena una copia de su página web en la memoria caché para que las solicitudes posteriores para la misma página web se puedan recuperar directamente de la caché; la salida almacenada en caché se envía a la aplicación. Esto mejora considerablemente el rendimiento de la aplicación. El siguiente fragmento de código muestra cómo puede implementar el almacenamiento en caché de salida de página.

La opción VaryByParam le ayuda a especificar las variables en la solicitud Http que necesitarían una nueva entrada de caché. Otras opciones posibles incluyen: VaryByHeader y VaryByCustom. También puede especificar Ubicación y Duración en la directiva OutputCache; puede usarlos para especificar la ubicación de la caché y también la duración durante la cual la página web debe almacenarse en caché respectivamente.

Almacenamiento en caché de fragmentos de página

El almacenamiento en caché de fragmentos de página es una estrategia de almacenamiento en caché en la que la página web se almacena en caché parcialmente; solo se almacenan en caché fragmentos de la página web, no toda la página web. Puede utilizar la misma sintaxis que el almacenamiento en caché de salida de página. Sin embargo, debe aplicar el atributo OutputCache a un control de usuario en lugar de a la página web. El almacenamiento en caché de fragmentos es útil cuando necesita almacenar en caché solo partes de su página web, generalmente en situaciones en las que su página web contiene una combinación de secciones comunes y dinámicas. Por ejemplo, puede tener una página web que contenga una combinación de elementos de menú y también ciertas secciones dinámicas que deben completarse y actualizarse desde la base de datos con frecuencia.

Almacenamiento en caché de datos

ASP.Net expone la API de caché para que pueda almacenar datos en el caché para recuperarlos más tarde. La sintaxis para almacenar datos en la caché mediante la API de caché se proporciona a continuación.

Cache["key"] = "value";

También puede utilizar los métodos Agregar o Insertar. Para alejar una entrada de la caché, puede utilizar el método Remove () de la clase Cache. El método Insert () de la clase Cache le permite especificar la dependencia de la caché. La dependencia de la caché es una estrategia que garantiza que cuando cambien los datos del almacén de datos (desde el cual se ha llenado la caché), la caché se volverá a llenar inmediatamente. Cuando los datos en el almacén de datos cambian, la caché caduca, lo que resulta en una repoblación de la caché con los datos más recientes. Puede leer más sobre esto en este artículo de MSDN.

Mejores prácticas

Debe almacenar en caché tan a menudo como pueda y almacenar los datos correctamente en cada capa de su aplicación. Al utilizar el almacenamiento en caché de datos, debe implementar una estrategia adecuada para asegurarse de que los datos en el caché estén sincronizados con los del almacén de datos. Puede aprovechar los administradores de caché distribuidos como Memcached para que su estrategia de almacenamiento en caché también pueda escalar bien y proporcionar ganancias de rendimiento considerables; puede usar Memcached para almacenar grandes datos. Debe asegurarse de almacenar en caché solo los datos relativamente obsoletos; no tiene ningún sentido almacenar en caché los datos que cambiarían con frecuencia con el tiempo. Además, los datos que es poco probable que se reutilicen no deben almacenarse en la caché. No debe abusar de SqlDependency o SqlCacheDependency.

Y ahora, conozcamos también las desventajas del almacenamiento en caché. El objeto de caché solo está disponible para el dominio de la aplicación actual. Por lo tanto, si desea almacenar datos en la caché y hacerlos accesibles a través de una granja web, esa no es una posibilidad. Tendría que aprovechar la caché distribuida como el almacenamiento en caché de AppFabric de Windows Server u otros marcos de almacenamiento en caché distribuidos para que los datos de la caché sean accesibles globalmente en una granja web.

El almacenamiento en caché es un mecanismo poderoso para mejorar el rendimiento de la aplicación al almacenar datos relativamente obsoletos en la memoria para que los mismos puedan recuperarse de la memoria caché en un momento posterior. Discutiré más sobre este tema con ejemplos de código de la vida real en mis futuras publicaciones aquí.