Almacenar en caché en ASP.NET con la clase SqlCacheDependency

Actualización: noviembre 2007

ASP.NET permite utilizar la clase SqlCacheDependency para crear una dependencia de elemento de caché en una tabla o una fila de una base de datos. Si se produce un cambio en la tabla o en una fila concreta, el elemento que tiene una dependencia se invalida y se quita de la memoria caché. Puede definir una dependencia en una tabla en Microsoft SQL Server 7.0, SQL Server 2000 y SQL Server 2005. Si utiliza SQL Server 2005, también podrá establecer una dependencia en un registro específico.

El uso del almacenamiento en caché con una dependencia SQL puede aumentar drásticamente el rendimiento de la aplicación en ciertos escenarios. Por ejemplo, imagine que está creando una aplicación de comercio electrónico que muestra información de productos desde una base de datos. Sin el almacenamiento en caché, la aplicación debe solicitar los datos de la base de datos cada vez que un usuario desea ver un producto. Podría almacenar en la caché la información sobre los productos una vez al día, lo que garantizaría unos tiempos de respuesta rápidos, dado que dicha información ya se encuentra en memoria. Sin embargo, si cambia la información de un producto, es posible que la información almacenada en la caché no esté sincronizada con los datos durante un período máximo de un día.

Mediante la dependencia de caché de SQL, podría almacenar en la caché la información sobre los productos y crear una dependencia basada en un cambio realizado en una tabla o en una fila de la base de datos. Cuando los datos se modifican, y sólo entonces, los elementos en caché basados en dichos datos se invalidan y se quitan de la memoria caché. La próxima vez que solicite el elemento de la memoria caché, si no está allí, podrá agregar de nuevo a la caché la versión actualizada y asegurarse de que dispone de los datos más recientes.

La dependencia de caché de SQL también está disponible para la caché de resultados de páginas. Por ejemplo, podría crear una página denominada ViewProduct.aspx que muestre información sobre un producto concreto. Podría definir la directiva de caché de la página como una dependencia SQL, tal y como haría con un elemento agregado manualmente a la caché. A continuación, la página se almacenaría en la caché hasta que se modificara la tabla o la fila de la que depende. Cuando se modificaran los datos, la página se volvería a crear y se almacenaría de nuevo en la caché de resultados.

Para obtener más información, vea Información general sobre el almacenamiento en caché en ASP.NET.

Características

La dependencia de caché de SQL de ASP.NET ofrece las siguientes características:

  • Se puede utilizar para la caché de la aplicación y la caché de resultados de páginas.

  • Se puede utilizar con SQL Server 7.0 y versiones posteriores.

  • También se puede utilizar en el hospedaje multiproceso en un único equipo (múltiples procesadores en un servidor) o en una batería de servidores Web (múltiples servidores que ejecutan la misma aplicación).

  • Las operaciones de base de datos asociadas a la dependencia de caché de SQL son simples y, por consiguiente, no producen una gran carga de procesamiento en el servidor.

  • No necesita un conocimiento exhaustivo de SQL para configurar la dependencia de caché de SQL en su aplicación y en SQL Server. ASP.NET incluye herramientas que automatizan la configuración. Además, la clase SqlCacheDependencyAdmin se puede utilizar para configurar la dependencia de caché de SQL mediante programación.

Implementación de SQL Server 7.0 y SQL Server 2000

ASP.NET implementa un modelo de sondeo para la dependencia de caché de SQL Server 7.0 y SQL Server 2000. Un subproceso del proceso ASP.NET sondea la base de datos de SQL Server en el intervalo de tiempo especificado para determinar si los datos han cambiado. En ese caso, los elementos de caché dependientes se invalidan y se quitan de la memoria caché. Puede especificar el intervalo de sondeo en su aplicación mediante declaración en el archivo Web.config o mediante programación con la clase SqlCacheDependency.

La dependencia de caché de SQL está limitada a los cambios realizados en los datos en el nivel de tabla de SQL Server 7.0 y SQL Server 2000. Puede configurar ASP.NET para sondear la base de datos en busca de cambios en una tabla, pero no en una fila determinada.

Habilitar el almacenamiento en caché de SQL

Para poder utilizar la dependencia de caché de SQL en SQL Server 7.0 y SQL Server 2000, es necesario configurar SQL Server de forma que la admita. ASP.NET proporciona utilidades para configurar el almacenamiento en caché de SQL en SQL Server, entre las que se incluyen una herramienta denominada Aspnet_regsql.exe y la clase SqlCacheDependencyAdmin. Para obtener más información sobre cómo habilitar la dependencia de caché de SQL con SQL Server, vea Cómo: Almacenar en memoria caché el resultado de las páginas con dependencias de clave de caché.

Implementación de SQL Server 2005

SQL Server 2005 implementa un modelo de dependencia de caché distinto del utilizado por SQL Server 7.0 y SQL Server 2000. No es necesario realizar ningún paso de configuración especial para habilitar dicha dependencia en SQL Server 2005. Además, SQL Server 2005 implementa un modelo de notificación de cambios en el que las notificaciones se envían a los servidores de aplicaciones de suscripción, en lugar de basarse en el modelo de sondeo requerido en versiones anteriores de SQL Server.

La dependencia de caché de SQL Server 2005 es más flexible en los tipos de cambios de los que se recibe notificación. SQL Server 2005 supervisa los cambios realizados en el conjunto de resultados de un comando SQL determinado. Si se produce en la base de datos un cambio que podría modificar el conjunto de resultados del comando, la dependencia hace que se invalide el elemento almacenado en caché. Esto permite a SQL Server 2005 proporcionar notificación de fila.

Hay algunos requisitos para la consulta utilizada para comprobar los cambios. Debe proporcionar nombres de tabla completos, incluido el nombre del propietario (por ejemplo, dbo.authors). En general, la notificación de SQL 2005 admite el uso de consultas Select, así como procedimientos almacenados, y permite utilizar consultas múltiples y anidadas, pero no operaciones de agregado como COUNT(*). Para obtener más información sobre las consultas admitidas y las reglas para la notificación en SQL Server 2005, vea el tema de los Libros en pantalla de SQL Server denominado "Creating a Query for Notification".

Configurar el almacenamiento en caché de SQL en la aplicación ASP.NET

Una vez que haya configurado SQL Server 7.0 o SQL Server 2000 para las dependencias de caché, o haya creado la dependencia de comando apropiada en SQL Server 2005, puede configurar su aplicación para que utilice la dependencia de caché de SQL tal y como configuraría cualquier otra dependencia de caché. Por ejemplo, puede crear un perfil de caché en el archivo Web.config y, a continuación, hacer referencia a dicho perfil en cada una de las páginas que utilicen la dependencia de caché de SQL. También podría emplear la dependencia de caché de SQL habilitándola mediante programación con la clase SqlCacheDependency. Para obtener más información, vea Cómo: Almacenar en memoria caché el resultado de las páginas con dependencias de clave de caché.

Vea también

Tareas

Cómo: Almacenar en caché el resultado de las páginas con dependencias de archivos

Conceptos

Información general sobre el almacenamiento en caché en ASP.NET

Configuración de la caché en ASP.NET