Cómo evitar el almacenamiento en caché en Internet Explorer

Importante

La aplicación de escritorio Internet Explorer 11 está retirada y sin soporte a partir del 15 de junio de 2022 para determinadas versiones de Windows 10.

Todavía puede acceder a sitios antiguos heredados que requieren Internet Explorer con el modo Internet Explorer en Microsoft Edge. Obtenga más información.

La aplicación de escritorio Internet Explorer 11 se redirigirá progresivamente al explorador Microsoft Edge, más rápido y seguro. En última instancia, se deshabilitará a través de Windows Update. Deshabilite IE hoy.

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

Versión del producto original:   Internet Explorer
Número KB original:   234067

Resumen

Puede usar Microsoft Internet Information Server (IIS) para marcar fácilmente páginas altamente volátiles o confidenciales con el siguiente script al principio extremo de las páginas de páginas Active Server (ASP) específicas:

<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>

Expiración y el encabezado Expires

Se recomienda encarecidamente que todos los servidores web usen un esquema para la expiración de todas las páginas web. Es una mala práctica que un servidor web no proporcione información de expiración a través del encabezado de respuesta EXPIRA HTTP para cada recurso devuelto a los clientes solicitantes. La mayoría de los exploradores y servidores proxy intermedios respetan esta información de expiración y la usan para aumentar la eficacia de las comunicaciones a través de la red.

Use siempre el encabezado Expires para especificar el tiempo más razonable cuando el cliente debe actualizar un archivo determinado en el servidor. Cuando las páginas se actualizan periódicamente, el siguiente período de actualización es la respuesta más eficaz. Tome, por ejemplo, una página de noticias diaria en Internet que se actualiza todos los días a las 5 a. m. El servidor web de esta página de noticias debe devolver un encabezado Expires con un valor de 5 A.M. al día siguiente. Cuando haya terminado, el explorador no tendrá que ponerse en contacto de nuevo con el servidor web hasta que la página haya cambiado.

Las páginas que no se espera que cambien deben marcarse con una fecha de expiración 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. En futuras solicitudes del usuario, Internet Explorer normalmente se pone en contacto con el servidor web para obtener actualizaciones en esa página a través de una solicitud if-modified-since condicional. Sin embargo, la página permanece en la memoria caché de disco (archivos temporales de Internet). Y la página se usa en situaciones apropiadas sin ponerse en contacto con el servidor web remoto, como:

  • cuando se usan los botones BACK y FORWARD para acceder al historial de navegación.
  • cuando el explorador está en modo sin conexión.

El Cache-Control encabezado

Sin embargo, algunas páginas son tan volátiles o confidenciales que no requieren almacenamiento en caché de disco. Para ello, Internet Explorer admite el encabezado http 1.1 Cache-Control http. Este encabezado impide todo el almacenamiento en caché de un recurso web determinado cuando un servidor HTTP 1.1 especifica el valor sin caché.

Las páginas que se mantienen fuera de la memoria caché no son accesibles hasta que el explorador pueda volver a contactar con el servidor web. Por lo tanto, los servidores deben usar el Cache-Control encabezado con moderación. En la mayoría de los casos, se prefiere el uso de Expires: -1.

El encabezado Pragma: No-Cache encabezado

Desafortunadamente, los servidores HTTP 1.0 heredados no pueden usar el Cache-Control encabezado. Para fines de compatibilidad con versiones anteriores con servidores HTTP 1.0, Internet Explorer admite un uso especial del encabezado PRAGMA HTTP: sin caché. Si el cliente se comunica con el servidor a través de una conexión segura ( ) y el servidor devuelve un encabezado Pragma: sin caché con la respuesta, Internet Explorer no almacena en caché https:// la respuesta.

Sin embargo, el encabezado Pragma: sin caché no era para este propósito. Según las especificaciones HTTP 1.0 y 1.1, este encabezado se define solo en el contexto de una solicitud, no en una respuesta. Está pensado para servidores proxy que pueden impedir que determinadas solicitudes importantes lleguen al servidor web de destino. Para aplicaciones futuras, el encabezado Cache-Control es el medio adecuado para controlar el almacenamiento en caché.

Etiquetas META HTTP-EQUIV

Las páginas HTML permiten un formulario HTTP-EQUIV especial de la etiqueta META que especifica encabezados HTTP concretos desde dentro del documento HTML. Este es un breve ejemplo de página HTML que usa 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: sin caché impide el almacenamiento en caché solo cuando se usa a través de una conexión segura. Una etiqueta META Pragma: sin caché se trata de forma idéntica a Expires: -1 si se usa en una página no segura. La página se almacenará en caché, pero se marcará como expirada inmediatamente.

Cache-Control las etiquetas META HTTP-EQUIV se omiten y no tienen efecto en las versiones 4 o 5 de Internet Explorer. Para usar Cache-Control, este encabezado debe especificarse con encabezados HTTP, tal como se describe en la Cache-Control sección anterior.

Nota

El uso de encabezados HTTP estándar es muy preferible sobre las etiquetas META. Las etiquetas META normalmente deben aparecer en la parte superior de la sección HTML HEAD. Y hay al menos un problema conocido con la etiqueta META DE PRAGMA HTTP-EQUIV.

Opciones de servidor para almacenamiento en caché

Cuando el Cache-Control debe usarse en páginas que no son ASP, puede que sea necesario usar opciones en la configuración del servidor para agregar este encabezado automáticamente. Para obtener información sobre el proceso de adición de encabezados HTTP a las respuestas del servidor para un directorio determinado, consulte el documento del servidor. Por ejemplo, en IIS 4, siga estos pasos:

  1. Inicie el Administrador de IIS.
  2. En el árbol de equipos y servicios, abra el servidor web predeterminado o el servidor web en cuestión. Busque el directorio que contiene el contenido que necesita el Cache-Control encabezado.
  3. Abra el cuadro de diálogo Propiedades de ese directorio.
  4. Seleccione la pestaña Encabezados HTTP.
  5. Seleccione el botón Agregar en el grupo Encabezados HTTP personalizados y agregue Cache-Control para el nombre de encabezado y sin caché para el valor de encabezado.

No es buena idea usar este encabezado globalmente en todo el servidor web. Restrinja su uso exclusivamente al contenido que absolutamente no debe almacenarse en caché en el cliente.

Lista de comprobación de problemas

Si ha aplicado las técnicas de este artículo y todavía tiene problemas con el almacenamiento en caché e Internet Explorer, revise esta lista de comprobación práctica paso a paso antes de ponerse en contacto con Microsoft para obtener asistencia técnica:

  • ¿Usa el encabezado Cache-Control con la propiedad ASP Response.CacheControl o a través de un encabezado HTTP devuelto? Es la única manera de evitar realmente el almacenamiento en caché en Internet Explorer.
  • ¿Usa Internet Explorer 4.01 Service Pack 2 o posterior? No hay ninguna forma de evitar completamente el almacenamiento en caché en versiones anteriores del explorador.
  • ¿Ha comprobado doblemente que el servidor web tiene HTTP 1.1 activado y devuelve respuestas HTTP 1.1 a Internet Explorer? Cache-Control encabezados no son válidos en las respuestas HTTP 1.0.
  • Si usa CGI/ISAPI/Servlets en el lado del servidor, ¿sigue exactamente la especificación HTTP 1.1, especialmente sobre la terminación CRLF de encabezados HTTP? En interés del rendimiento, Internet Explorer suele ser imperdonable de las respuestas que infringen la especificación HTTP 1.1. Por lo general, se producen encabezados ignorados o informes de errores inesperados del servidor.
  • ¿Los encabezados HTTP están escritos correctamente?

Vea también