Cómo modificar el encabezado HTTP Cache-Control cuando utiliza IIS


Resumen


Los administradores de Web que utilizan servicios de Internet Information Server (IIS) que necesite deshabilitar periódicamente el almacenamiento en caché de contenido que cambia con frecuencia. Este artículo describe cómo establecer el valor del encabezado HTTP Cache-Control mediante páginas Active Server (ASP), así como la propiedad de la metabase CacheControlCustom.

Más información


Cuando se trabaja con el contenido que a menudo cambian, es aconsejable especificar qué contenido se puede almacenar en caché y qué no, y si el cliente o un servidor proxy debe almacenar en caché el contenido. Puede especificar estas opciones en IIS mediante la propiedad CacheControlCustom , que se puede establecer para todo el servidor, un sitio Web determinado o un directorio físico o virtual específico. Al establecer esta propiedad devuelve los encabezados HTTP que se asemejan a lo siguiente:
HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Cache-Control: <CACHE SETTING>Content-Type: <type>/<subtype>Content-Length: <size of content>
El valor de configuración de la caché depende de la especificación HTTP/1.1.

Valores de encabezado Cache-Control HTTP/1.1 usadas

La especificación de HTTP/1.1 en RFC 2616 define varios valores para el encabezado Cache-Control. La siguiente lista contiene algunos de los valores más comunes que se utilizan.
  • Público: respuesta HTTP puede tener una caché mediante cualquier caché. Por ejemplo, un cliente o un servidor proxy puede almacenar en caché la respuesta. Esto permite compartir contenido entre usuarios que utilicen el mismo servidor proxy.
  • Privado: el mensaje de respuesta está diseñado para un solo cliente y no debe tener una caché mediante una memoria caché compartida. Por ejemplo, un servidor proxy no almacenar en caché la respuesta a pesar de que un cliente puede. Esto permite al cliente mantener una versión almacenada en caché, mientras que otros clientes que utilizan el mismo servidor proxy mantengan distintas versiones en caché.
  • No-cache: memoria caché en la ruta de acceso completa no debe mantener una copia en caché de la respuesta. Esto permite especificar que ni el cliente o servidor proxy responderá a una solicitud subsiguiente de contenido mediante el uso de una versión en caché.

Al establecer la propiedad Cache-Control

Los siguientes ejemplos definen métodos diferentes para configurar este valor:

Para una página

Mediante páginas Active Server (ASP), el siguiente código ASP deshabilita el almacenamiento en caché de una página determinada:
<% @Language="VBScript" %><% Response.CacheControl = "no-cache" %>
Nota: este código debe insertar al principio de la página, a menos que está habilitado el almacenamiento en búfer, ya que modifica los encabezados HTTP.

Para una carpeta

Los siguientes ejemplos establecen la configuración de Control de caché para una carpeta o un directorio virtual denominado "Imágenes" en el sitio Web predeterminado:
  • Utilización de Adsutil.vbs:
    1. Abra un símbolo del sistema y cambie a la carpeta C:\InetPub\AdminScripts.
    2. Ejecute el siguiente comando:
      ADSUTIL CSCRIPT. VBS SET W3SVC/1/ROOT/imágenes/CacheControlCustom "no-cache"
  • Uso de secuencias de comandos ADSI:
    1. En el Bloc de notas, escriba el siguiente código ADSI:
      Option ExplicitDim objCacheSet objCache = GetObject("IIS://localhost/w3svc/1/root/images")objCache.CacheControlCustom = "no-cache"objCache.SetInfo
    2. Guarde el archivo como Disablefolder.vbs en la carpeta C:\InetPub\AdminScripts y, a continuación, cierre el Bloc de notas.
    3. En el símbolo del sistema, cambie a la carpeta C:\InetPub\AdminScripts.
    4. Ejecute el siguiente comando:
      CSCRIPT DISABLEFOLDER. VBS

REFERENCIAS

Para obtener más información sobre este tema, consulte el siguiente artículo de Microsoft Knowledge Base:
247389 IIS: cómo deshabilitar el almacenamiento en caché de tipos MIME específico
Además, consulte la sección 14.9 de la especificación de HTTP/1.1 en RFC 2616 en la siguiente dirección URL:
RFC 2616 Protocolo de transferencia de hipertexto--HTTP/1.1