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

  1. 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".

  2. 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

  1. 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.

  2. 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 memoria caché versiones de una página mediante el explorador que realizó la solicitud

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

Establecer el almacenamiento en caché de una página

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