Compartir a través de


Almacenamiento en caché <caching>

Información general

El elemento <caching> le permite habilitar o deshabilitar el almacenamiento en caché de resultados de página para una aplicación de Internet Information Services (IIS) 7. Este elemento también le permite configurar si IIS almacena en caché el resultado de la página en modo de usuario, en modo kernel o en ambos y qué límites de almacenamiento en caché de resultados quiere imponer, si así fuera.

El elemento <caching> también contiene un elemento <profiles> que, a su vez, contiene una colección de opciones de caché de resultados que se pueden aplicar a las páginas ASP.NET.

El almacenamiento en caché de resultados de página almacena una respuesta de una página dinámica, como una página ASP o una página ASP.NET, en memoria después de que un explorador lo solicite. Cuando lleguen solicitudes posteriores para la página, el servidor envía la respuesta almacenada en caché, en lugar de volver a procesar la página. La memoria caché de resultados de página ASP.NET es independiente de la caché de resultados de IIS 7. En las aplicaciones que usan el modo integrado de ASP.NET, la memoria caché de resultados de página de ASP.NET se puede usar mediante programación para cualquier tipo de contenido, de forma muy similar a la caché de resultados de IIS 7.

El almacenamiento en caché de resultados de página reduce la carga del servidor y el tiempo de respuesta. El almacenamiento en caché de resultados funciona mejor con páginas semidinámicas, como una página ASP.NET que depende de una tabla de base de datos que no cambia con frecuencia.

El almacenamiento en caché de resultados no es necesario para los archivos estáticos, por ejemplo, archivos HTML, JPG o GIF, y puede provocar una mayor sobrecarga de la memoria para las páginas ASP.NET o PHP dinámicas que leen desde una base de datos que cambia con frecuencia.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <caching> no se modificó en IIS 10.0.
IIS 8.5 El elemento <caching> no se modificó en IIS 8.5.
IIS 8.0 El elemento <caching> no se modificó en IIS 8.0.
IIS 7.5 El elemento <caching> no se modificó en IIS 7.5.
IIS 7.0 El elemento <caching> se introdujo en IIS 7.0.
IIS 6,0 N/D

Configuración

El elemento <caching> se incluye en la instalación predeterminada de IIS 7.

Procedimientos

Cómo configurar el almacenamiento en caché de resultados de página

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • Haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, vaya a la conexión, el sitio, la aplicación o el directorio para el que quiere configurar el almacenamiento en caché de resultados de página.

  3. En el panel Inicio, desplácese hasta Almacenamiento en caché de resultados y, a continuación, haga doble clic en Almacenamiento en caché de resultados.
    Screenshot of Output Caching selected in the Default Web Site Home pane.

  4. En el panel Acciones, haga clic en Agregar....

  5. En el cuadro de diálogo Agregar regla de caché, escriba la extensión de nombre de archivo que quiere almacenar en caché en el cuadro Extensión de nombre de archivo y, a continuación, seleccione la opción Almacenamiento en caché en modo usuario, la opción Almacenamiento en caché en modo kernel o ambas.

  6. Seleccione las opciones que quiera usar para el almacenamiento en caché y, a continuación, haga clic en Aceptar.
    Screenshot of the Add Cache Rule dialog with the specified options.

Configuración

Puede configurar el elemento <caching> en el nivel de servidor en el archivo ApplicationHost.config o bien en el nivel de sitio, de aplicación o de directorio en un archivo Web.config.

Atributos

Atributo Descripción
enabled Atributo Boolean opcional.

Especifica si el almacenamiento en caché de resultados de página está habilitado.

El valor predeterminado es true.
enableKernelCache Atributo Boolean opcional.

Especifica si el almacenamiento en caché del kernel está habilitado.

El valor predeterminado es true.
maxCacheSize Atributo uint opcional.

Especifica el tamaño máximo de la memoria caché de resultados.

Nota: Esta configuración solo es efectiva en el nivel del archivo ApplicationHost.config. Si establece esta propiedad en un nivel inferior, no tendrá ningún efecto.

El valor predeterminado es 0.
maxResponseSize Atributo uint opcional.

Especifica el tamaño máximo de respuesta que se puede almacenar en caché.

Nota: Esta configuración solo es efectiva en el nivel del archivo ApplicationHost.config. Si establece esta propiedad en un nivel inferior, no tendrá ningún efecto.

El valor predeterminado es 262144.

Elementos secundarios

Elemento Descripción
profiles Elemento opcional.

Contiene un grupo de configuraciones de caché de resultados que se pueden aplicar a las páginas ASP.NET.

Ejemplo de configuración

En el ejemplo de configuración siguiente se habilita el almacenamiento en caché en modo de usuario y el almacenamiento en caché en modo kernel, ambos habilitados de forma predeterminada en IIS 7.0. También se usa el elemento <add> contenido en el elemento <profiles> para habilitar el almacenamiento en caché de resultados para los archivos con la extensión de nombre de archivo .asp. También se usa el atributo policy para almacenar la página en la memoria caché de resultados hasta que cambie; la misma operación se realiza para el almacenamiento en caché del kernel con el atributo kernelCachePolicy.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

En el ejemplo de código siguiente se establece el tamaño máximo de la memoria caché de resultados en 1 gigabyte y el tamaño máximo de respuesta que se puede almacenar en la memoria caché de resultados en 512 kilobytes.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

Código de ejemplo

En los ejemplos siguientes se configura el almacenamiento en caché de resultados de página para archivos con la extensión de nombre de archivo .asp y se configura IIS para almacenar en caché en modo de usuario y en modo kernel hasta que cambien los archivos ASP.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Nota:

Debe asegurarse de establecer el parámetro de confirmación en apphost cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()