Cómo almacenar en caché en ASP.NET mediante Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 811431 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso se describe maneras de controlar cómo ASP.NET almacena en caché las páginas Web y objetos de datos. Al almacenamiento en caché, se evita volver a crear información cuando se realizan solicitudes posteriores. Almacenamiento en caché es una técnica importante para la creación de alto rendimiento y las aplicaciones de servidor escalable. En la primera solicitud para la página, puede almacenar objetos de datos, páginas o partes de la página en la memoria. Puede almacenar estos elementos en el servidor Web, en el servidor proxy o en el explorador.

Más información

ASP.NET proporciona métodos útiles para controlar el almacenamiento en caché. Puede utilizar la directiva @ OutputCache para controlar el almacenamiento en caché en ASP.NET de resultados de páginas. Utilice la clase HttpCachePolicy para almacenar objetos arbitrarios, tales como los conjuntos de datos, la memoria del servidor. Puede almacenar la caché de aplicaciones, como el explorador del cliente, servidor proxy y servicios de Internet Information Server (IIS). Utilizando el encabezado de HTTP Cache-control, puede controlar el almacenamiento en caché.

Para obtener información adicional acerca del almacenamiento en caché resultados ASP.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
308516Cómo resultados de página de control de almacenamiento en caché en ASP.NET de mediante Visual Basic .NET

Páginas de caché de ASP.NET

Puede almacenar en caché con la directiva @ OutputCache , o mediante programación a través de código mediante Visual Basic .NET o Visual C#. NET. La directiva @ OutputCache contiene un atributo de ubicación . Este atributo determina la ubicación para el elemento en caché. Puede especificar una de las siguientes ubicaciones:
  • cualquier - se almacena la caché de resultados en el explorador del cliente, en el servidor proxy (o cualquier otro servidor) que participa en la solicitud o en el servidor donde se procesó la solicitud. De forma predeterminada, cualquier está activada.
  • cliente - se almacena la caché de resultados en el explorador del cliente.
  • descendente - se almacena la caché de resultados en cualquier dispositivo compatible con caché (distintos del servidor de origen) que participan en la solicitud.
  • servidor - se almacena la caché de resultados en el servidor Web.
  • Ninguno - este desactiva la caché de resultados.

Los siguientes son ejemplos de código para la directiva @ OutputCache y el código equivalente mediante programación.
  • para almacenar la caché de resultados durante un tiempo especificado

    Enfoque declarativo:
    <%@ OutputCache Duration="60" VaryByParam="None" %>

    Enfoque de programación:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Public)
  • para almacenar la caché de resultados en el cliente de explorador donde se originó la solicitud

    Enfoque declarativo:
    <%@ OutputCache Duration="60" Location="Client" VaryByParam="None" %>

    Enfoque de programación:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Private)
    
  • para almacenar la caché de salida en cualquier dispositivo compatible con cachés HTTP 1.1 incluidos los servidores proxy y el cliente que realizó la solicitud

    Enfoque declarativo:
    <%@ OutputCache Duration="60" Location="Downstream" VaryByParam="None" %>

    Enfoque de programación:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.SetNoServerCaching()
  • para almacenar la caché de resultados en el servidor Web

    Enfoque declarativo:
    <%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>

    Enfoque de programación:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Server)
    
  • almacenar en caché el resultado para cada solicitud HTTP que llega con una ciudad diferente

    Enfoque declarativo:
    <%@ OutputCache duration="60" varybyparam="City" %>
    

    Enfoque de programación:
    Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.VaryByParams("City") = true
    
    Para el atributo VaryByCustom , el atributo VaryByHeader y el atributo VaryByParam en la directiva @ OutputCache , la clase HttpCachePolicy suministra la propiedad VaryByHeaders y la propiedad VaryByParams y el método SetVaryByCustom .

Desactivar el cliente y caché de proxy

Para desactivar la caché de resultados para una página Web ASP.NET en la ubicación del cliente y en la ubicación del proxy, establezca el valor de atributo de ubicación en Ninguno y, a continuación, establezca el valor de VaryByParam en Ninguno en la directiva @ OutputCache . Utilice los siguientes ejemplos de código para desactivar cliente y el almacenamiento en caché de proxy.
  • Enfoque declarativo:
    <%@ OutputCache Location="None" VaryByParam="None" %>
  • Enfoque de programación:
    Response.Cache.SetCacheability(HttpCacheability.NoCache)

Caché objetos arbitrarios en memoria del servidor

ASP.NET incluye un mecanismo de almacenamiento en caché eficaz y fácil de usar que puede utilizar para almacenar objetos que requieren gran cantidad de recursos de servidor para crear en la memoria. La clase Cache implementa este método. Las instancias son privadas para cada aplicación y la duración está vinculada a la aplicación correspondiente. Para almacenar en caché los objetos arbitrarios en ASP.NET mediante la clase de caché , siga estos pasos:
  1. Crear una nueva aplicación Web de ASP.NET mediante Visual Basic .NET.
  2. De forma predeterminada, se creará WebForm1.aspx .
  3. En la vista HTML de WebForm1.aspx , reemplace el código existente con el siguiente ejemplo de código:
    <%@ Import Namespace="System.Data.SqlClient" %>
    <%@ Import Namespace="System.Data" %>
    <HTML>
    	<script language="vb" runat="server">
    
    		Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    			Dim Source As DataView
    
    		'Retrieve the DataView object from the Cache class. If it does not exist, add the DataView object to the Cache class.
    
    		Source = CType(Cache("MyDataSet"), DataView)
    
    		If Source Is Nothing Then
    
    			Dim myConnection As SqlConnection = New SqlConnection("Server=ServerName; database=Pubs; user id=UID; password=PWD;")
    			Dim myCommand As SqlDataAdapter = New SqlDataAdapter("select * from Authors", myConnection)
    			Dim ds As DataSet = New DataSet()
    			myCommand.Fill(ds, "Authors")
    
    			Source = New DataView(ds.Tables("Authors"))
    			Cache("MyDataSet") = Source
    			CacheMsg.Text = "Dataset created explicitly"
    			
    		Else
    			
    			CacheMsg.Text = "Dataset retrieved from cache"
    
    		End If
    
    		' Bind the DataView object to DataGrid. 
    		MyDataGrid.DataSource = Source
    		MyDataGrid.DataBind()
    
    		End Sub
    
    	</script>
    	<body>
    		<form method="GET" runat="server" ID="Form1">
    	      <h3><font face="Verdana">Caching Data</font></h3>
    			<ASP:DataGrid id="MyDataGrid" runat="server"
    			Width="700"
    			BackColor="#ccccff"
    			BorderColor="black"
    			ShowFooter="false"
    			CellPadding=3
    			CellSpacing="0"
    			Font-Name="Verdana"
    			Font-Size="8pt"
    			HeaderStyle-BackColor="#aaaad" />
    			<p>
    			<i><asp:label id="CacheMsg" runat="server"/></i>
    	    </form>
    		</P>
    	</body>
    </HTML>
    Nota reemplace los valores de ServerName, UID y PWD en el código de ejemplo para el objeto SqlConnection con su nombre de SQL Server, identificador de usuario y contraseña.
  4. En el menú Depurar , haga clic en iniciar para ejecutar la aplicación.

    Nota Cuando reinicia la aplicación, se vuelve a crear el objeto en caché .

Referencias

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
234067Cómo impedir el almacenamiento en caché en Internet Explorer
247404Cómo modificar el encabezado de HTTP Cache-control cuando utiliza IIS
311006Cómo impedir la caché de Web en Windows 2000
247389IIS: Cómo deshabilitar la caché de tipos MIME específico
313561Cómo establecer encabezados HTTP para la caducidad del contenido en IIS


Para obtener más información al respecto, visite el siguiente sitio Web de Microsoft:
http://msdn2.microsoft.com/en-us/library/xsbfdd8c(vs.71).aspx


Propiedades

Id. de artículo: 811431 - Última revisión: jueves, 31 de mayo de 2007 - Versión: 3.6
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbmt kbhowtomaster kbdatabinding kbcaching kbwebforms kbinfo KB811431 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 811431

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com