Actualización dinámica de fragmentos de una página almacenada en memoria caché

Actualización: noviembre 2007

El almacenamiento en memoria caché de una página puede aumentar considerablemente el rendimiento de una aplicación Web. Sin embargo, en algunos casos necesita almacenar en memoria caché la mayoría de la página y algunos fragmentos de la página deben ser dinámicos. Por ejemplo, si crea una página de noticias que es totalmente estática durante ciertos períodos de tiempo, puede configurar toda la página para que se almacene en memoria caché. Si deseara incluir un anuncio que cambiara en cada solicitud de página, la parte de la página que contiene el anuncio debería ser dinámica.

Para permitirle almacenar en memoria caché una página pero sustituir algún contenido dinámicamente, puede utilizar la sustitución tras la caché de ASP.NET. Con la sustitución tras la caché, se almacena en memoria caché toda la página, pero se marcan determinadas partes de la misma como exentas de almacenamiento en memoria caché. En el ejemplo de los anuncios, el control AdRotator le permite aprovechar la sustitución tras la caché, de forma que se actualicen los anuncios creados dinámicamente para cada usuario y para cada página.

Hay tres maneras de implementar la sustitución tras la caché:

  • Mediante declaración, utilizando el control Substitution.

  • Mediante programación, utilizando la API del control Substitution.

  • Implícitamente, utilizando el control AdRotator.

Substitution (Control)

El control Substitution de ASP.NET especifica una sección de una página almacenada en memoria caché que se crea dinámicamente en lugar de almacenarse en memoria caché. Coloque un control Substitution en la ubicación de la página donde desee que aparezca el contenido dinámico.

En tiempo de ejecución, el control Substitution llama a un método especificado con la propiedad MethodName. El método debe devolver una cadena, que a continuación reemplaza el contenido del control Substitution. El método debe ser un método estático en el Page contenedor o el control UserControl.

Al utilizar el control de sustitución, la asignación de memoria caché del cliente cambiará al servidor, de forma que la página no se almacene en memoria caché en el cliente. Esto garantiza que las futuras solicitudes de la página llamen de nuevo al método para generar el contenido dinámico.

API de sustitución

Para crear mediante programación contenido dinámico para una página almacenada en memoria caché, puede llamar al método WriteSubstitution en el código de la página, pasándole el nombre de un método como parámetro. El método que controla la creación del contenido dinámico toma un único parámetro HttpContext y devuelve una cadena. La cadena devuelta es el contenido que se sustituirá en la ubicación determinada. Una ventaja de llamar al método WriteSubstitution en lugar de utilizar el control Substitution mediante declaración es que puede llamar a un método de cualquier objeto arbitrario, en lugar de llamar a un método estático del objeto Page o UserControl.

Al llamar al método WriteSubstitution, la asignación de memoria caché del cliente cambiará al servidor, de forma que la página no se almacene en memoria caché en el cliente. Esto garantiza que las futuras solicitudes de la página llamen de nuevo al método para generar el contenido dinámico.

AdRotator (Control)

El control de servidor AdRotator implementa internamente la compatibilidad con la sustitución tras la caché. Si coloca un control AdRotator en la página, representará anuncios únicos en cada solicitud, independientemente de que la página primaria esté almacenada en memoria caché o no. Por tanto, una página que incluye un control AdRotator sólo se almacena en memoria caché en el servidor.

Vea también

Conceptos

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

Almacenar en caché páginas ASP.NET

Almacenar en memoria caché varias versiones de una página

Almacenar en caché partes de una página ASP.NET

Almacenar en caché datos de la aplicación

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