Cómo impedir el almacenamiento en caché de Internet Explorer

Seleccione idioma Seleccione idioma
Id. de artículo: 234067 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E234067
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describe el uso de encabezados HTTP para controlar el almacenamiento en caché de páginas Web en Internet Explorer.

Puede utilizar Microsoft Internet Information Server (IIS) para marcar fácilmente páginas muy volátiles o confidenciales usando la secuencia de comandos siguiente al principio de esas páginas Active Server (ASP) concretas:
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Más información

Caducidad y el encabezado Expires

Se recomienda encarecidamente que todos los servidores Web utilicen un esquema para la caducidad de todas las páginas Web. No es conveniente que un servidor Web no proporcione información de caducidad a través del encabezado de respuesta de HTTP Expires para cada recurso que se devuelve a los clientes que lo solicitan. La mayoría de los exploradores y servidores proxy intermedios actuales respetan esta información de caducidad y la utilizan para aumentar la eficacia de las comunicaciones a través de la red.

Siempre debe utilizarse el encabezado Expires para especificar el tiempo más razonable en que el cliente debe actualizar un archivo determinado del servidor. Cuando las páginas se actualizan periódicamente, el siguiente período de actualización es la respuesta más eficiente. Por ejemplo, imagine una página de noticias diaria de Internet que se actualiza todos los días a las 5 a.m. El servidor Web para esta página de noticias debe devolver un encabezado Expires con un valor de 5 a.m. del próximo día. Cuando se hace esto, el explorador no necesita ponerse en contacto de nuevo con el servidor Web hasta que la página haya cambiado realmente.

Las páginas que no se espera que cambien deben marcarse con una fecha de caducidad de aproximadamente un año.

En muchos casos, los servidores Web tienen una o más páginas volátiles en un servidor que contienen información, que está sujeta a cambios inmediatamente. El servidor debe marcar estas páginas con un valor de "-1" para el encabezado Expires. Cuando el usuario realice solicitudes futuras, Internet Explorer normalmente se pondrá en contacto con el servidor Web para ver si hay actualizaciones a esa página mediante una solicitud condicional If-Modified-Since. Sin embargo, la página permanecerá en la caché de disco ("Archivos temporales de Internet") y se utilizará en las situaciones adecuadas sin ponerse en contacto con el servidor Web remoto, como cuando se utilizan los botones ATRÁS y ADELANTE para tener acceso al historial de exploración o cuando el explorador está en modo sin conexión.

El encabezado Cache-Control

Sin embargo, algunas páginas son tan volátiles o confidenciales que no requieren ningún almacenamiento en caché de disco. Con este fin, Internet Explorer admite el encabezado Cache-Control de HTTP 1.1, que impide el almacenamiento en caché de un recurso Web determinado cuando un servidor HTTP 1.1 especifica el valor no-cache.

Puesto que las páginas que no están en caché no son accesibles hasta que el explorador pueda volver a ponerse en contacto con el servidor Web, los servidores deben utilizar el encabezado Cache-Control con precaución. En la mayoría de los casos es preferible utilizar "Expires: -1".

El encabezado Pragma: No-Cache

Desgraciadamente, los servidores HTTP 1.0 antiguos no pueden utilizar el encabezado Cache-Control. Por compatibilidad con los servidores HTTP 1.0 anteriores, Internet Explorer admite un uso especial del encabezado HTTP Pragma: no-cache. Si el cliente se comunica con el servidor a través de una conexión segura (https://) y el servidor devuelve un encabezado Pragma: no-cache con la respuesta, Internet Explorer no almacena en caché la respuesta.

Sin embargo, tenga en cuenta que el encabezado Pragma: no-cache no está pensado para esto. Según las especificaciones de HTTP 1.0 y 1.1, este encabezado sólo se define en el contexto de una solicitud, no de una respuesta, y realmente está pensado para que los servidores proxy impidan que ciertas solicitudes importantes lleguen al servidor Web de destino. Para las aplicaciones futuras, el encabezado Cache-Control es el medio adecuado de controlar el almacenamiento en caché.

Etiquetas META de HTTP-EQUIV

Las páginas HTML permiten una forma HTTP-EQUIV especial de la etiqueta META que especifica determinados encabezados HTTP desde dentro del documento HTML. He aquí una página HTML corta de ejemplo que utiliza los encabezados Pragma: no-cache y Expires: -1:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
				
Pragma: no-cache sólo impide el almacenamiento en caché cuando se utiliza a través de una conexión segura. Una etiqueta META Pragma: no-cache se trata de forma idéntica a Expires: -1 si se utilizan en una página no segura. La página se almacenará en caché pero se marcará como que caduca inmediatamente.

Las etiquetas META HTTP-EQUIV Cache-Control se pasan por alto y no tienen ningún efecto en las versiones 4 ó 5 de Internet Explorer. Para utilizar Cache-Control, este encabezado se debe especificar utilizando los encabezados HTTP según se ha descrito anteriormente en la sección Cache-Control.

Tenga en cuenta que se prefiere el uso de encabezados HTTP estándar en lugar de etiquetas META. Las etiquetas META deben aparecer normalmente en la parte superior de la sección HTML HEAD. Y hay al menos un problema conocido con la etiqueta META HTTP-EQUIV Pragma. Para obtener más información al respecto, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
222064 Es posible que la etiqueta "Pragma: No-cache" no impida que se almacene la página en memoria caché
Opciones de servidor para el almacenamiento en caché Cuando hay que utilizar el encabezado Cache-Control en páginas que no son ASP, puede ser necesario utilizar opciones en la configuración del servidor para agregar este encabezado automáticamente. Consulte en la documentación del servidor el proceso de agregar encabezados HTTP a las respuestas del servidor para un directorio determinado. Por ejemplo, en IIS 4, siga estos pasos:
  • Invoque el Administrador de servicios Internet.
  • Utilizando el árbol de equipo y servicios, abra el Servidor Web predeterminado (o el servidor Web deseado) y busque el directorio que contiene el contenido que necesita el encabezado Cache-Control.
  • Muestre el cuadro de diálogo Propiedades para ese directorio.
  • Elija la ficha Encabezados HTTP.
  • Haga clic en el botón Agregar en el grupo Encabezados HTTP personalizados, y agregue "Cache-Control" para el nombre del encabezado y "no-cache" para el valor del encabezado.
Recuerde que no es conveniente utilizar este encabezado globalmente en todo el servidor Web. Restrinja su uso únicamente al contenido que no se deba almacenar en caché en el cliente. Lista de comprobación de problemas Si ha aplicado las técnicas descritas en este artículo y todavía sigue teniendo problemas con el almacenamiento en caché e Internet Explorer, examine esta cómoda lista de comprobación paso a paso antes de ponerse en contacto con Microsoft para pedir ayuda del soporte técnico:
  • ¿Está utilizando el encabezado Cache-Control con la propiedad de ASP "Response.CacheControl" o mediante un encabezado HTTP devuelto? Ésta es la única manera de evitar realmente el almacenamiento en caché en Internet Explorer.
  • ¿Está utilizando el Service Pack 2 o posterior de Internet Explorer 4.01? No hay ninguna manera de impedir totalmente el almacenamiento en caché en las versiones anteriores del explorador.
  • ¿Ha vuelto a comprobar que su servidor Web tiene HTTP 1.1 activado y está devolviendo respuestas de HTTP 1.1 a Internet Explorer? Los encabezados Cache-Control no son válidos en las respuestas de HTTP 1.0.
  • Si está utilizando CGI/ISAPI/Servlets en el servidor, ¿está siguiendo exactamente la especificación de HTTP 1.1, especialmente en lo que respecta a la finalización CRLF de los encabezados HTTP? Por mejorar el rendimiento, Internet Explorer suele ser implacable con las respuestas que infringen la especificación de HTTP 1.1. Esto normalmente hace que se omitan encabezados o que se informe de errores del servidor inesperados.
  • ¿Se han escrito correctamente los encabezados HTTP?

Referencias

Para obtener más información al respecto, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
189409 Controlar el almacenamiento en caché de páginas Web con IIS 4.0
165150 Cómo utilizar Pragma: No-cache con IIS e IE
Para obtener más información acerca de HTTP/1.1, visite el siguiente sitio Web con el fin de obtener RFC 2616:
http://www.w3.org/Protocols/rfc2616/rfc2616.html

Propiedades

Id. de artículo: 234067 - Última revisión: viernes, 20 de enero de 2006 - Versión: 4.1
La información de este artículo se refiere a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Service Pack 1 de Microsoft Internet Explorer 4.01
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 6.0
  • Service Pack 1 de Microsoft Internet Explorer 6.0
Palabras clave: 
kbhowto kbcaching kbfaq KB234067

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