Cómo controlar el almacenamiento en caché en ASP.NET utilizando .NET Visual C# de resultados de páginas

Resumen

En este artículo se muestra cómo utilizar la directiva @ OutputCache para controlar el almacenamiento en caché en ASP.NET con Visual .NET C# resultado de la página. Puede utilizar esta técnica para almacenar en caché las páginas del sitio se accede con más frecuencia, que pueden mejorar considerablemente el rendimiento de su servidor Web. El rendimiento suele medirse en solicitudes por segundo. Aunque el código de ejemplo en este artículo muestra cómo utilizar la duración y los atributos de VaryByParam , el artículo también incluye una breve descripción de otros enfoques que puede utilizar con la directiva @ OutputCache .

Nota: no es la intención de este artículo para describir todos los atributos de la directiva @ OutputCache y sus posibles usos en detalle. Para obtener más información, consulte la sección referencias .

Volver al principio

Requisitos

  • Microsoft Windows 2000 o Windows XP
  • Microsoft.NET Framework
  • Microsoft Internet Information Server (IIS)
  • Microsoft ASP.NET
Volver al principio

Introducción a la directiva @ OutputCache

Para utilizar la directiva @ OutputCache para controlar el almacenamiento en caché de resultados de páginas, agregue simplemente la directiva en la parte superior de la página. El método Page.InitOutputCache traduce la directiva en métodos de la clase HttpCachePolicy .

La directiva @ OutputCache incluye los siguientes atributos y configuraciones:
  • Duración: este atributo especifica cuánto tiempo un elemento se almacena en la caché. Se muestra el valor de duración en segundos.
  • VaryByParam: este atributo determina entradas de caché por parámetros Get o Post . Por ejemplo, si una variable QueryString denominada testVal se establece para el atributo VaryByParam , cada solicitud de página que contenga un valor diferente para
    testVal se almacena en caché en una página independiente. El código siguiente ilustra la sintaxis del atributo VaryByParam :
    <%@ OutputCache Duration="Seconds" VaryByParam="testVal"%>
    Nota: puede especificar un asterisco (*) para que se almacenan en caché en todas las versiones diferentes del elemento. Además, puede especificar "none" Si sólo existe una versión de un elemento almacenado en caché.
  • Ubicación: este atributo determina dónde se almacenará en caché el elemento. Puede especificar las ubicaciones siguientes:
    • Cualquier
    • Cliente
    • Nivel inferior
    • Servidor
    • Ninguno

    El código siguiente muestra la sintaxis para el atributo de ubicación :
    <%@ OutputCache Duration="Seconds" Location="Client" %>
  • VaryByCustom: este atributo contiene el valor predeterminado Browser, lo que significa que se almacena en caché una instancia diferente de un elemento para cada versión del explorador que la solicite. Por ejemplo, Microsoft Internet Explorer 5 e Internet Explorer 5.5 solicitan el elemento. Cuando VaryByCustom se establece en el Explorador, existe una entrada de caché para cada versión del explorador. No puede proporcionar una cadena para controlar el almacenamiento en caché de otros escenarios personalizados. La cadena no tiene ningún significado a menos que proporcione código para reemplazar el método HttpApplication.GetVaryByCustomString en el archivo Global.asax.

    El código siguiente ilustra la sintaxis del atributo VaryByCustom :
    <%@ OutputCache Duration="Seconds" VaryByCustom="string" %>
  • VaryByHeader: este atributo permite especificar un determinado valor de encabezado HTTP como criterio para determinar distintas entradas de caché. El código siguiente ilustra la sintaxis del atributo VaryByHeader :
    <%@ OutputCache Duration="60" VaryByHeader="Accept-Language" %>
Volver al principio

Pasos para crear el ejemplo Duration de @ OutputCache

Los pasos siguientes demuestran cómo utilizar el atributo Duration para resultados de páginas en caché para especificar cuánto tiempo para almacenar en caché un elemento.
  1. Cree un nuevo proyecto de aplicación Web de ASP.NET de Visual Basic como sigue:
    1. Abra Visual Studio. NET.
    2. En el menú archivo , elija nuevoy, a continuación, haga clic en proyecto.
    3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual C# en Tipos de proyectoy haga clic en Aplicación Web de ASP.NET en plantillas. En el cuadro de texto nombre , escriba OutputCacheDemoy, a continuación, haga clic en Aceptar.
  2. Crear una nueva página .aspx en Visual Studio .NET como sigue:
    1. En el Explorador de soluciones, haga clic en el nodo del proyecto, haga clic en Agregary, a continuación, haga clic en Agregar formulario Web.
    2. En el cuadro de texto nombre , escriba OutputCacheDuration.aspxy, a continuación, haga clic en Abrir.
  3. Elimine el código predeterminado que Visual Studio .NET agrega a la página.
  4. Resalte el código siguiente, haga clic en el código y, a continuación, haga clic en Copiar. En Visual Studio. NET, haga clic en Pegar como HTML en el menú Edición para pegar el código en la página. aspx:
    <%@ OutputCache Duration="20" VaryByParam="none"%><HTML>
    <HEAD>
    <script language="C#" runat="server">
    void Page_Load(object sender, EventArgs e)
    {
    Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
    }
    </script>
    </HEAD>
    <body>
    <STRONG>@ OutputCache Duration Sample</STRONG>
    <hr>
    <br>
    <asp:Label id="Label1" runat="server">Label</asp:Label>
    <br>
    </body>
    </HTML>

  5. En el menú archivo , haga clic en Guardar OutputCacheDuration.aspx para guardar la página.
  6. En el menú Generar en el entorno de desarrollo integrado (IDE), haga clic en Generar.
  7. Para ejecutar el ejemplo, haga OutputCacheDuration.aspx en Explorador de soluciones y, a continuación, haga clic en Ver en el explorador.
  8. Cuando aparezca la página en el explorador, tome nota del tiempo que aparece en la etiqueta.
  9. Actualice la página en el explorador. Observe que la hora es la misma que tenía anteriormente. Si actualiza la página una vez transcurrida la duración de 20 segundos, se muestra una versión de la página recién almacenada en caché.

    Nota: si está viendo la página en un explorador externo, puede presionar la tecla F5 para actualizar la página. Si está viendo la página en el explorador interno del IDE de Visual Studio. NET, puede haga clic en la página y, a continuación, haga clic en Actualizar para actualizar la página.
Volver al principio

Pasos para crear el ejemplo VaryByParam de @ OutputCache

Los pasos siguientes demuestran cómo utilizar el atributo VaryByParam para resultados de páginas en caché para permitir distintas versiones en caché de una página según el valor de una de sus variables QueryString .
  1. Crear una nueva página .aspx en Visual Studio .NET como sigue:
    1. En el Explorador de soluciones, haga clic en el nodo del proyecto, haga clic en Agregary, a continuación, haga clic en Agregar formulario Web.
    2. En el cuadro de texto nombre , escriba
      OutputCacheVaryByParam.aspxy, a continuación, haga clic en Abrir.
  2. Elimine el código predeterminado que Visual Studio .NET agrega a la página predeterminada.
  3. Resalte el código siguiente, haga clic en el código y, a continuación, haga clic en Copiar. En Visual Studio. NET, haga clic en Pegar como HTML en el menú Edición para pegar el código en la página. aspx:
    <%@ OutputCache Duration="20" VaryByParam="testVal"%><HTML>
    <HEAD>
    <script language="C#" runat="server">
    void Page_Load(object sender, EventArgs e)
    {
    Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
    }
    </script>
    </HEAD>
    <body>
    <P>
    <STRONG>@ OutputCache VaryByParam Sample</STRONG>
    </P>
    <P>
    <hr>
    </P>
    <P>
    <br>
    <asp:Label id="Label1" runat="server"></asp:Label>
    <br>
    <hr>
    <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=123">testVal(123)</a>
    <br>
    <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=345">testVal(345)</a>
    </P>
    </body>
    </HTML>

    Nota: debe modificar los dos hipervínculos del código anterior para reflejar el nombre de su servidor Web. Además, puede observar que el atributo VaryByParam establecido varían, en función del valor de la variable testValde QueryString . Esto hace que la página resultante se almacene en caché para cada instancia en la que el valor de la variable QueryString para testVal es el mismo.
  4. En el menú archivo , haga clic en Guardar OutputCacheVaryByParam.aspx para guardar la página.
  5. En el menú Generar en el IDE, haga clic en Generar.
  6. Para ejecutar el ejemplo, haga OutputCacheVaryByParam.aspx en Explorador de soluciones y, a continuación, haga clic en Ver en el explorador.
  7. Cuando aparezca la página en el explorador, haga clic en testVal (123). Esto hace que el explorador vuelva a la página pero con QueryString variable testVal se establece en "123". Tome nota del tiempo que aparece.
  8. Haga clic de nuevo en testVal (123) . Observe que la hora es la misma que tenía anteriormente. Resultado de la página se ha almacenado en caché basándose en el valor de la variable testVal .
  9. Haga clic en testVal (345). Observe que aparece un nuevo tiempo en la página.
  10. Haga clic de nuevo en testVal (345) . Observe que el resultado de la página anterior se almacena en caché y muestra en el explorador.
  11. Haga clic en testVal (123) para volver a la primera instancia. Observe que aparecen versiones de caché de resultados de página diferente, basado en el valor de la variable QueryString suministrado.
Volver al principio

Solución de problemas

  • Cuando utilice VaryByParam, tenga en cuenta que los cambios en la cadena de consulta hacen entradas de caché adicionales.
  • Tenga en cuenta que se especifica la duración en segundos.
  • Cuando usa VaryByCustom y reemplaza el método HttpApplication.GetVaryByCustomString en el archivo Global.asax, se utiliza la configuración predeterminada del Explorador si se encuentra ninguna coincidencia para la cadena personalizada que se proporciona con el atributo.
Volver al principio

Referencias

Para obtener más información sobre el almacenamiento en caché de resultados de páginas, consulte los siguientes sitios Web de Microsoft:
Tutorial rápido de almacenamiento en caché de resultados de páginas GotDotNet
Kit de desarrollo de Software (SDK) de Microsoft.NET Framework
http://msdn2.microsoft.com/en-us/library/ms950382.aspx

Almacenar en caché páginas ASP.NET
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx

@ OutputCache
http://msdn2.microsoft.com/en-us/library/hdxfb6cy(vs.71).aspx
Volver al principio
Propiedades

Id. de artículo: 308375 - Última revisión: 22 ene. 2017 - Revisión: 2

Comentarios