evitar el almacenamiento en caché al presionar los botones ATRÁS

Cuando presiona el botón Atrás en Google Chrome, parece que almacena en caché el código fuente (a diferencia del DOM en FF, pero eso es solo observación, no algo que esté seguro).

Algunas veces necesito evitar dicho almacenamiento en caché, por ejemplo, cuando está en un proceso de pago, redirecciones a PayPal, etc.

¿Cómo lo hago?

preguntado el 27 de julio de 12 a las 19:07

Lamentablemente, soy consciente de esto. Sin embargo, no resolverá esto -

2 Respuestas

De hecho, esto es un problema y parece ser específico de Chrome. En mi caso, solo me preocupaba que se mostrara una página obsoleta si contenía un formulario, y todos mis formularios se envían usando la misma biblioteca de formularios AJAX que escribí, así que agregué este código para que se ejecute antes de hacer la redirección (la redirección se hace en JS usando window.location = ...):

//If the user clicks the back button after submitting the form and being redirected,
//Google Chrome redisplays previous entries even if they have since been changed
//(its caching works differently from other browsers).
//This is a (non-foolproof) hack to try to prevent this.
if (window.chrome) {
    //This re-requests the page headers for the current page,
    //which causes Chrome to clear its cache of the page.
    //Unfortunately there appears to be no other client-side way of preventing this caching issue in Chrome.
    $.ajax({
        url: window.location,
        method: 'HEAD'
    })
}

Por supuesto, sería mucho más limpio establecer encabezados sin caché en el lado del servidor, pero no quería hacer eso por todos páginas, y no quería molestarme en detectar qué páginas contienen formularios (o configurar manualmente los encabezados de caché en esas páginas) solo para evitar este problema en Chrome.

Espero que haya una solución mejor, pero aún no he encontrado ninguna...

contestado el 27 de mayo de 15 a las 22:05

<script type = "text/javascript" >
    history.pushState(null, null, '');
    window.addEventListener('popstate', function(event) {
    history.pushState(null, null, '');
    });
    </script>

agregue este javascript, esto debería bloquear el botón Atrás, puede usar este método como alternativa

Respondido 14 Jul 15, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.