Posteado por: martinmelchior | noviembre 14, 2006

Cacheando


Por algún u otro motivo, hace varios días viene dando vueltas por mi cabeza el caching de datos en ASP.Net. La verdad aún no se porque, y es por eso que para darle con el gusto decidí ponerme a leer un poco y tirar unas líneas.

Seguramente todos conocen uno de los nuevos objetos que nos provee Asp.net 2.0 denominado SqlDataSource. Bien, este señor ya viene preparado para el manejo del caching de datos, veamos un ejemplo:

<asp:SqlDataSource ID=”SqlDataSource1″ runat=”server”
ConnectionString=”<%$ ConnectionStrings:Nomina %>”
SelectCommand=”SELECT * FROM [TipoEmpleados]”
EnableCaching=”true” CacheDuration=”60″>
</asp:SqlDataSource>

En el ejemplo podemos observar que hemos habilitado el manejo del caching a través de la propiedad EnableCaching=”true”, y además definimos que los datos se mantengan en la misma por un lapso de 60 segundo con la propiedad CacheDuration=”60″.
Resumiendo, el código que aquí vemos dejará en la cache los datos traidos por el SqlDataSource durante 1 minuto.

Otra propiedad muy interesante de este objeto es: CacheExpirationPolicy=”Absolute | Sliding” la cuál puede asumir alguno de los 2 valores que observamos.

  • Absolute: Indica que los datos deben permanecer en la cache por la cantidad de segundos que se ha definido (opción por defecto).
  • Sliding: Indica que el tiempo que resta de la cache se renueve cada vez que un usuario accede a la página y se traen datos vía el SqlDataSource aunque los datos de la cache no hayan expirado. Esto significa que si configuramos el SqlDataSource con CacheDuration=”60″ y CacheExpirationPolicy=”Sliding” y tenemos un ingreso de usuario cada 50 segundos durante una hora, durante toda esta hora los datos que permanecen en la cache nunca se actualizarán.

Por último, voy a hablar acerca de la etiqueta sqlCacheDependency. Esta característica se debe configurar en el web.config y básicamente lo que hace es crear una dependencia entre la cache y una o varias tablas de nuestra base de datos.

Ej: SqlCacheDependency=”BaseDeDatos:Tabla1; Tabla2; Tabla3

Que nos permite hacer esta opción, pues bien, supongamos que dejamos configurado el caching de un SqlDataSource por 20 minutos, entonces si la tabla en cuestión sufre alguna actualización durante este tiempo, Sql Server avisará de este cambio al motor de ASP.Net. Así el motor motor de ASP.Net bajará los datos de la caché para generarlos nuevamente.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: