una solucion recursos navegador máxima las htaccess google fecha estos establecer edad caducidad caché cabeceras aprovechar almacenamiento almacenables http http-status-code-301

http - solucion - aprovechar el caché del navegador



¿Cuánto tiempo duran los navegadores en caché HTTP 301s? (10)

Como muestran las otras respuestas. El almacenamiento en caché puede ser indefinidamente en el navegador. Esto es extremadamente peligroso. Así que no lo hagas. Al menos añadir encabezados de caché. En htaccess siempre lo hago de esta manera con el almacenamiento en caché ahora:

<IfModule mod_rewrite.c> RewriteCond %{HTTP_HOST} ^(www/.)?example/.com$ [NC] # The E=nocache:1 sets the environment variable nocache to the value of one RewriteRule ^/?(.*) https://www.example.org/$1 [L,R=301,E=nocache:1] </IfModule> <IfModule mod_headers.c> ## Set the response header if the "nocache" environment variable is set ## in the RewriteRule above. Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache ## Set Expires too ... Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache </IfModule>

Estoy depurando un problema con una redirección permanente HTTP 301. Después de una prueba rápida, parece que Safari borra su caché de 301 cuando se reinicia, pero Firefox no.

¿Cuándo IE, Chrome, Firefox y Safari borran su caché de 301s?

ACTUALIZACIÓN: por ejemplo, si quiero redirigir example1.com a example2.com , pero accidentalmente lo configuro para redirigir a example3.com , eso es un problema. Puedo corregir el error, pero cualquiera que haya visitado example1.com entretanto habrá guardado en la example3.com caché la redirección incorrecta a example3.com , por lo que no podrá acceder a example3.com a example3.com hasta que se example3.com su caché. . Tras una investigación, descubrí que no había ningún conjunto de encabezados de Cache-Control y Expires . Los encabezados de la respuesta 301 incorrecta habrían sido así:

HTTP/1.1 301 Moved Permanently Date: Wed, 27 Feb 2013 12:05:53 GMT Server: Apache/2.2.21 (Unix) DAV/2 PHP/5.3.8 X-Powered-By: PHP/5.3.8 Location: http://example3.com/ Content-Type: text/html

Mis propias pruebas muestran que:

  • IE7, IE8, Android 2.3.4 no se almacenan en caché en absoluto.
  • Firefox 18.0.2, Safari 5.1.7 (en Windows 7) y Opera 12.14 se almacenan en la memoria caché, y borra la memoria caché al reiniciar el navegador.
  • IE10 y Chrome 25 almacenan en caché, pero no se borran al reiniciar el navegador, ¿ cuándo se borrarán?

Haga que el usuario envíe un formulario de publicación en esa url y la redirección en caché se habrá ido :)

<body onload="document.forms[0].submit()"> <form action="https://forum.pirati.cz/unreadposts.html" method="post"> <input type="submit" value="fix" /> </form> </body>


Para borrar una redirección permanente, vaya a chrome: // net-internals. A la derecha de la barra de estado roja superior, haga clic en la flecha hacia abajo ▼ para abrir el menú desplegable y, en el grupo "Herramientas", seleccione "Borrar caché".

A partir de la versión 48, esto fue lo único que funcionó para borrar un 301 en caché.


Para propósitos de prueba (por lo tanto, no hay redirecciones en caché), las personas pueden abrir NUEVA VENTANA PRIVADA : haga clic en CTRL+SHIFT+ N [o P ]


Pruebe sus redirecciones utilizando el modo incógnito / InPrivate para que cuando cierre el navegador, se vaciará la memoria caché y al volver a abrir la ventana no contendrá la memoria caché.


Tengo una solución simple que funcionó en todos los principales navegadores (la última versión), incluye IE, Chrome y FF

  1. Ctrl + Shift + Del
  2. -
    1. Chrome: seleccione "Historial de navegación" y "Caché ..."
    2. IE: Dejo la opción predeterminada "Archivos temporales de Internet y archivos del sitio web", "Cookies y datos del sitio web", "Historial"
    3. FF: "Historial de navegación y descarga", "Caché"
  3. Haga clic en "Eliminar"
  4. Cierre y vuelva a abrir su navegador. Deberia de funcionar

Una respuesta que ayuda a aquellos que desean desesperadamente deshacerse del caché de redireccionamiento:

Chrome almacena en caché el redireccionamiento 301 infinitamente, o hasta que abra DevTools, active Desactivar caché (mientras DevTools está abierto) y vuelva a cargar la página .

Esto me funcionó en Chrome 39, pero desafortunadamente no para localhost.


como respuesta de @thomasrutter

Si anteriormente emitió un redireccionamiento 301 pero desea cancelarlo

Si las personas aún tienen la redirección 301 almacenada en caché en su navegador, continuarán siendo llevadas a la página de destino, independientemente de si la página de origen aún tiene la redirección en su lugar. Sus opciones para arreglar esto incluyen:

La solución más simple y mejor es emitir otra redirección 301 nuevamente.

El navegador se dará cuenta de que se está dirigiendo de nuevo a lo que anteriormente se pensaba que era una URL fuera de servicio, y esto debería hacer que vuelva a recuperar esa URL para confirmar que el redireccionamiento anterior aún no está allí.

Si no tiene control sobre el sitio al que se dirigió el objetivo de redireccionamiento anterior, no tiene suerte. Intenta y ruega al propietario del sitio que te redireccione a ti.

De hecho, esto significa:

  1. a.com 301 a b.com

  2. eliminar 301 de a.com

  3. añadir b.com 301 a a.com

Entonces funciona.


301 es una respuesta almacenable en caché por HTTP RFC y los navegadores lo almacenarán en caché dependiendo de los encabezados de almacenamiento en caché HTTP que tenga en la respuesta. Use FireBug o Charles para examinar los encabezados de respuesta para saber la duración exacta de la respuesta que se almacenará en caché.

Si desea controlar la duración del almacenamiento en caché, puede usar los encabezados de respuesta HTTP Cache-Control y Expires para hacer lo mismo. Alternativamente, si no desea almacenar en caché la respuesta 301 , use los siguientes encabezados.

Cache-Control: no-store, no-cache, must-revalidate Expires: Thu, 01 Jan 1970 00:00:00 GMT


Al menos dos navegadores, Chrome y Firefox, almacenarán en caché un redireccionamiento 301 sin fecha de caducidad .

Es decir, permanecerá en caché durante el tiempo que la memoria caché del navegador pueda alojarlo. Se eliminará de la memoria caché si borra manualmente la memoria caché, o si las entradas de la memoria caché se purgan para dejar espacio para las nuevas.

Puedes verificar esto al menos en Firefox yendo a about:cache y encontrándolo en caché de disco.

No sé sobre el comportamiento de otros navegadores, como IE10 / IE11. Sin embargo, dado que otros navegadores lo almacenan en caché indefinidamente, de todos modos tendrá que adaptarse a esto.

En todos los navegadores, incluido Chrome / Firefox, todavía es posible anular este comportamiento predeterminado utilizando encabezados, como se describe a continuación:

Nota: esta respuesta se escribió en 2014 y el comportamiento del navegador puede cambiar con el tiempo.

Si no desea que el redireccionamiento se almacene en caché

Este almacenamiento en caché indefinido es solo el almacenamiento en caché predeterminado de estos navegadores en ausencia de encabezados de Cache-Control. La lógica es que está especificando un redireccionamiento "permanente" y no les está dando ninguna otra instrucción de almacenamiento en caché, por lo que lo tratarán como si lo quisiera como almacenado en caché indefinidamente.

Los navegadores aún respetan los encabezados Cache-Control y Expires como con cualquier otra respuesta, si están especificados.

Puede agregar encabezados como Cache-Control: max-age=3600 o Expires: Thu, 01 Dec 2014 16:00:00 GMT a sus 301 redireccionamientos. Incluso puede agregar Cache-Control: no-cache para que no se almacene en caché permanentemente por el navegador o Cache-Control: no-store por lo que ni siquiera puede ser almacenado en el almacenamiento temporal por el navegador.

Una alternativa mejor en mi opinión, sin embargo, es usar un redireccionamiento 302 o 307. Esto no implica para los navegadores o cachés que son redireccionamientos "permanentes" y, por lo tanto, no se deben almacenar en caché en ausencia de encabezados de control de caché.

Para mí, parece que emitir un redireccionamiento 301, pero marcarlo como no almacenable en caché va en contra del espíritu de lo que es un redireccionamiento 301, aunque sea técnicamente válido. YMMV, y puede encontrar casos extremos en los que tiene sentido que un redireccionamiento "permanente" tenga un límite de tiempo.

Si anteriormente emitió un redireccionamiento 301 pero desea cancelarlo

Si las personas aún tienen la redirección 301 almacenada en caché en su navegador, continuarán siendo llevadas a la página de destino, independientemente de si la página de origen aún tiene la redirección en su lugar. Sus opciones para arreglar esto incluyen:

  • La solución más simple y mejor es emitir otra redirección 301 nuevamente.

    El navegador se dará cuenta de que se está dirigiendo de nuevo a lo que anteriormente se pensaba que era una URL sin comisionar, y esto debería hacer que vuelva a recuperar esa URL para confirmar que el redireccionamiento anterior aún no está allí.

    Edición: algunos comentarios arrojan dudas sobre esto, ver más abajo.

  • Si no tiene control sobre el sitio al que se dirigió el objetivo de redireccionamiento anterior, no tiene suerte. Intenta y ruega al propietario del sitio que te redireccione a ti.

Además, es mejor prevenir que curar: evite un redireccionamiento 301 si no está seguro de querer quitar de forma permanente la URL antigua.