2010-05-23 10 views
5

Tengo una situación en la que mi página carga información de una base de datos, que luego se modifica a través de AJAX.Problema al modificar una página con ajax, y el navegador mantiene la página sin modificar en caché

Hago clic en un enlace a otra página, luego uso el botón 'volver' para volver a la página original.

Los cambios en la página a través de AJAX que hice antes no aparecen, porque el navegador tiene la página sin modificar almacenada en la caché.

¿Hay alguna manera de arreglar esto sin configurar la página para no almacenar en caché?

Gracias :)

Respuesta

1

Imagínese que cada petición al servidor para obtener información, incluyendo la carga de la página inicial y cada solicitud Ajax, son entidades distintas. Cada uno puede o no almacenarse en caché en cualquier lugar entre el servidor y el navegador.

Está modificando la página inicial que le fue servida (y en caché por el navegador, en la mayoría de los casos) con solicitudes arbitrarias al servidor y manipulación dinámica de DOM. El navegador tiene capacidad para rastrear estos cambios.

Deberá mantener el estado, quizás utilizando una cookie, para reconstruir la página. De hecho, me parece que un documento generado dinámicamente que desee mover hacia y desde definitivamente debe tener un flujo de trabajo definido que persista y recupere su estado.

¿Tal vez establezca una cookie para cada elemento manipulado con la clave que se envió al servidor para obtener los datos?

+0

Entonces, ¿quiere decir almacenar cada cambio en los elementos de una página en una cookie, y usar JS para volver a cargar esos cambios si la página se devuelve? –

+0

@David Si diseña su código de tal manera que una entrada en particular resulte en un resultado específico, simplemente puede almacenar las claves. Por ejemplo, el usuario está mirando una buena lista formateada o una grilla compuesta de un rico conjunto de detalles sobre una serie de propiedades inmobiliarias. El usuario ha dedicado tiempo a compilar esta lista de información, por lo que perderla probablemente disminuirá el valor de su sitio. Escriba su código para que pueda construir la lista de un elemento a la vez utilizando solo la clave principal de la lista. Luego, cada vez que se modifique la lista, simplemente persista una lista de claves [233,2235,25235,23] –

+0

en una cookie y, cuando se cargue el script, simplemente verifique esa cookie. Si está presente, entonces sabrá que debe reconstruir la lista llamando al servidor y recuperando y mostrando los datos para cada artículo en la lista. ¿Tiene sentido? Puede que necesite más esfuerzo, pero su código será más inteligente y obtendrá más resultados a largo plazo. En realidad, hay muchos controles ajax, por ejemplo, complementos jquery, que ya son capaces de mantener el estado usando cookies. La mayoría de las redes que valen la sal pueden sobrevivir un ciclo de página usando la estrategia que acabo de describir. En fin, buena suerte. –

Cuestiones relacionadas