Cómo: Mejorar el rendimiento al almacenar en caché páginas de ASP.NET

Resumen

En este artículo se muestra cómo mejorar el rendimiento de aplicaciones ASP.NET mediante almacenamiento en caché de páginas completas de ASP.NET con la directiva de página @ OutputCache . Puede también la directiva de página @ OutputCache para almacenar en caché partes específicas de una página ASP.NET, aunque en este artículo no muestra esta implementación.

Requisitos

La lista siguiente describe el hardware, software, infraestructura de red y service packs recomendados que necesita:

  • Microsoft Visual Studio .NET
  • Microsoft Internet Information Server (IIS) 4.0 o Microsoft Internet Information Services (IIS) 5.0
En este artículo se supone que está familiarizado con los temas siguientes:
  • Aplicaciones Web
  • Microsoft ASP.NET

Descripción técnica

Cuando se almacena en caché información, coloque la información en la memoria. Normalmente, cuando IIS recibe una solicitud para una página, IIS lee la página desde el disco duro y, a continuación, envía la página. A veces, IIS automáticamente pueden almacenar información en la memoria para mejorar el rendimiento. La directiva @ OutputCache permite guardar una página en la memoria, incluso si esa página no ajusta a los criterios que utiliza IIS para determinar la información que se mantiene en la memoria.

Por ejemplo, las páginas que tienen acceso a una base de datos se ejecutan cada vez que vaya a la página para obtener los datos más recientes. Cuando se utiliza la directiva @ OutputCache , la página se mantiene en la memoria con los resultados de una consulta a la base de datos hasta que caduque el período de tiempo especificado. Por lo tanto, puede utilizar la directiva @ OutputCache para evitar consultar la base de datos cada vez que un usuario examina la página. Esto es muy útil para los datos que no cambian con frecuencia.

Crear una aplicación Web de ASP.NET que utiliza la directiva @ OutputCache

En esta sección, cree una aplicación Web de ASP.NET que utiliza la directiva @ OutputCache de página en memoria caché la página durante un período de tiempo específico.

  1. Siga estos pasos para crear una nueva aplicación Web ASP.NET en Visual Basic .NET:
    1. Abra Visual Studio. NET.
    2. En el menú archivo, elija nuevo y, a continuación, haga clic en proyecto.
    3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual Basic en Tipos de proyectoy, a continuación, en plantillas, haga clic en Aplicación Web de ASP.NET .
  2. Cambie a vista HTML en la ventana WebForm1.aspx y, a continuación, agregue la siguiente directiva inmediatamente después de la directiva @ Page :
    <%@ OutputCache Duration="10" VaryByParam="none" %>
    Este código establece el atributo de duración de la directiva @ OutputCache en 10 segundos para que el contenido de la página se almacenan en caché durante 10 segundos. Además, el atributo VaryByParam consiste en una lista separada por punto y coma de cadenas que puede utilizar para modificar la caché de salida basándose en variables que define el usuario. Esta funcionalidad está fuera del alcance de este artículo, por lo que el código anterior establece VaryByParam en Ninguno.
  3. En la vista HTML de WebForm1.aspx, agregue el código siguiente entre las etiquetas de cierre < formulario > para agregar un control Label al formulario:
    <asp:Label>Last cached: <%Response.Write(Now())%>
    </asp:Label>

    Esta etiqueta se utiliza para mostrar la última vez que se cargó la página. El valor de esta etiqueta sólo se debe cambiar una vez cada 10 segundos, independientemente de cuántas veces se actualiza la página.
  4. En el menú archivo , haga clic en Guardar.
  5. En el menú Generar , haga clic en Generar solución.
  6. Haga clic en la página y, a continuación, haga clic en Ver en el explorador. Observe que aparece una etiqueta, que muestra la hora actual.
  7. Actualice la página varias veces. Observe que la etiqueta cambia sólo después de que caduque el período de tiempo de 10 segundos.

Lista de código completa

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%><%@ OutputCache Duration="10" VaryByParam="none" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Label>
Last Cached: <%Response.Write(Now())%>
</asp:Label>
</form>
</body>
</html>

Nota: puede que necesite modificar el atributo Inherits en la siguiente línea de código como sea necesario para hacer referencia al nombre del proyecto y formulario Web:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>
Actualmente, el código supone que su proyecto se denomina WebApplication1 y que el formulario Web se denomina WebForm1.

Comprobar que funciona

  1. Abrir varias ventanas de explorador.
  2. En cada ventana, vaya a la página .aspx como si tratara de un usuario final. Observe que todas las ventanas muestran el mismo tiempo durante 10 segundos, aunque no se desplazó a la página al mismo tiempo.
  3. Transcurridos 10 segundos, vaya a o actualice la página aspx. Observe que todas las ventanas de actualización de la hora.



Referencias

Para obtener más información, consulte los siguientes sitios Web de Microsoft:

Propiedades

Id. de artículo: 315896 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios