Cache del Framework
ASP.NET MVC nos ofrece una alternativa para trabajar con el cache y es su propio motor de cache dentro del nivel de aplicación, este funciona de manera similar al HttpApplicationState sin embargo no depende del estado del servidor IIS para mantener los datos.
De hecho para que el cache se renueve deben ocurrir algunas condiciones muy puntuales, por lo que se hace bastante confiable para manejar datos no críticos en nuestras aplicaciones pero que sean tan concurridos que nos ayuden a descargar trabajo del servidor.
En esta sección vamos a ver en profundidad el cache de ASP.NET MVC y la forma en la cual podemos trabajar sus diferentes condiciones.
¿Cómo Trabaja?
El cache de ASP.NET MVC trabaja de forma llave-valor, es decir, se conforman elementos con un nombre único y estos tendrán los valores que necesitemos almacenar, pero a diferencia de las alternativas HttpApplicationState y HttpContext.Items, la información no está limitada al usuario ni al request y tampoco está limitada por los procesos del servidor web, haciendo de esta forma de cache algo mucho más avanzado y menos problemático para trabajar.
Sabemos que el cache no es un almacenamiento definitivo, es por ello que este se va a renovar cuando ocurra alguna de las siguientes condiciones:
- Se llegue a la fecha de expiración del cache, es decir, cuando llegue el momento en que la data almacenada sea considerada que es muy vieja.
- Cuando cambia la dependencia del elemento, haciendo entonces que este ya no sea válido.
- Cuando el servidor se queda con pocos recursos y debe obtener más, entonces utiliza el espacio ocupado por el cache.
Expiración del cache
Este concepto es clave, ya que nos permite establecer la vigencia y validez de los datos almacenados, también dentro de este mismo tema, tenemos varios tipos de expiración, lo que hace que podamos ajustar nuestra aplicación a un nivel mucho más profundo cuando se trata de establecer una mejor forma de acceso a los datos. Tenemos dos tipos de expiración, veamos a continuación:
Expiración deslizante
Está consiste en renovar la vigencia del elemento mientras se esté utilizando y una vez que ya no se está utilizando se empieza a correr un tiempo tras el cual si no hubo uso de los datos se borran, pero mientras se estén usando la fecha de expiración se va corriendo hacia el futuro.
Por ejemplo si tenemos un set de datos en el cache y pasamos más de 20 minutos sin utilizarlos se borran para evitar que sigan consumiendo espacio en memoria.
Expiración absoluta
En esta modalidad el cache tiene una fecha exacta de expiración y sin importar el uso o no de los datos una vez cumplida la fecha es borrado, esto se utilizar más que todo cuando tenemos datos que sabemos que no son muy utilizados y que podemos renovar con cierta frecuencia.
Finalizando esta sección hemos aprendido un poco más sobre lo que es el cache propio de ASP.NET MVC en nuestras aplicaciones.