Cómo: Almacenar en memoria caché versiones de una página mediante encabezados HTTP
Actualización: noviembre 2007
ASP.NET permite almacenar en memoria caché varias versiones de una página en función del valor de un encabezado HTTP que especifique. Puede especificarse el almacenamiento en memoria caché mediante un solo encabezado, varios o todos los encabezados que pasen a la aplicación cuando se solicita la página.
Para almacenar en caché versiones de una página de forma declarativa según los valores de los encabezados HTTP
En la página ASP.NET, incluya una directiva @ OutputCache con los atributos Duration y VaryByParam o VaryByControl necesarios. El atributo Duration debe ser un valor entero mayor que cero. Si desea sólo almacenar en caché mediante valores de encabezado HTTP, debe establecer el atributo VaryByParam en "Ninguno".
En la directiva @ OutputCache, incluya el atributo VaryByHeader y establezca su valor en el nombre del encabezado HTTP mediante el que desea variar el contenido de la memoria caché.
El ejemplo siguiente almacena en caché la página durante 60 segundos y establece versiones de una página para almacenar en caché en función del valor pasado con el encabezado HTTP Accept-Language:
<%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>
Nota: Si desea variar el contenido almacenado en caché mediante varios encabezados, incluya una lista de nombres de encabezado separada por puntos y coma (;). Si desea que el contenido de la memoria caché varíe mediante todos los valores de encabezados, establezca el atributo VaryByHeader en asterisco (*).
Para almacenar en caché versiones de una página mediante programación según un valor de encabezado HTTP
En el método Page_Load de la página, llame a los métodos SetCacheability y SetExpires en la propiedad Cache del objeto Response de la página.
Establezca el valor para el encabezado HTTP de la propiedad VaryByHeaders en true.
El código de ejemplo siguiente muestra cómo almacenar en caché varias versiones de una página durante un minuto para solicitudes con valores diferentes para el encabezado HTTP Accept-Language.
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); Response.Cache.VaryByHeaders["Accept-Language"] = true; }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) Response.Cache.VaryByHeaders("Accept-Language") = true End Sub
Nota: Si desea variar el contenido almacenado en memoria caché mediante varios encabezados, necesita establecer varios valores en la propiedad VaryByHeaders. Si desea variar mediante todos los encabezados, establezca VaryByHeaders["VaryByUnspecifiedParameters"] en true.
Vea también
Tareas
Cómo: Establecer el almacenamiento en caché de una página ASP.NET mediante declaración
Cómo: Establecer el almacenamiento en caché de una página mediante programación
Cómo: Almacenar en caché versiones de una página utilizando parámetros
Cómo: Almacenar en caché versiones de una página utilizando cadenas personalizadas
Conceptos
Almacenar en caché páginas ASP.NET