Busqué en la Web sobre esta pregunta pero no encontré nada:
¿Cuál es la lógica del botón de retroceso? ¿Qué sucede cuando presionamos el botón Atrás en un navegador web?
Realmente me gustaría entender más sobre eso.
Gracias.
Busqué en la Web sobre esta pregunta pero no encontré nada:
¿Cuál es la lógica del botón de retroceso? ¿Qué sucede cuando presionamos el botón Atrás en un navegador web?
Realmente me gustaría entender más sobre eso.
Gracias.
Respuestas:
Su navegador web mantiene una pila (o lista, si lo desea) de las páginas web que ha visitado en esa ventana. Digamos que su página de inicio es google.com y desde allí visita algunos otros sitios web: youtube.com, yahoo.com y cnn.com. Al visitar el último, la lista se ve así:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Cuando presiona el botón Atrás, el navegador lo lleva de regreso a la página anterior en la lista, así:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
En este punto, puede presionar Atrás nuevamente para ir a youtube.com, o puede presionar Adelante para ingresar nuevamente a cnn.com. Digamos que presiona Atrás por segunda vez:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Si ahora va a, digamos, abc.com, la lista cambia para verse así:
google.com -> youtube.com -> abc.com
^
|
current page
Tenga en cuenta que tanto yahoo.com como cnn.com han desaparecido de la lista. Esto se debe a que tomó una nueva ruta. El navegador solo mantiene una lista de las páginas que visitó para llegar a donde se encuentra ahora, no un historial de todas las páginas en las que ha estado. El navegador tampoco sabe nada sobre la estructura del sitio que está visitando, lo que puede provocar un comportamiento sorprendente.
Estás en un sitio de compras (ne.com, como un breve ejemplo) que tiene categorías y subcategorías de productos para navegar. El diseñador del sitio ha proporcionado cuidadosamente rutas de navegación cerca de la parte superior de la ventana para permitirle navegar por las categorías. Empiece en la página superior del sitio, haga clic en Hardware y luego en Memoria. La lista ahora se ve así:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem
^
|
current page
Desea volver a la categoría Hardware, por lo que usa las rutas de exploración para subir a la categoría principal en lugar de usar el botón Atrás. Ahora la lista del navegador se ve así:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
De acuerdo con la estructura del sitio, retrocedió (subió un nivel), pero al navegador avanzó porque hizo clic en un enlace. Cada vez que hace clic en un enlace o escribe una URL en la barra de direcciones, avanza en lo que respecta al navegador, ya sea que ese enlace lo lleve o no a una página en la que ya ha estado.
Finalmente, desea volver a la página principal del sitio (ne.com). Podrías usar las migas de pan, pero esta vez haces clic en el botón Atrás; parece obvio que debería llevarte un nivel arriba, ¿verdad? Pero, ¿a dónde te lleva?
Inicialmente es confuso para muchos usuarios (incluido yo mismo, cuando por casualidad hago exactamente esto) que te lleva "hacia abajo" un nivel, de vuelta a la categoría Memoria. Al mirar la lista de páginas, es fácil ver por qué:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
Para volver a la página principal usando sólo el botón Atrás se necesitarían dos pulsaciones más, lo que le llevaría "de vuelta" a la categoría Hardware y finalmente a la página principal. A los programadores nos parece tan obvio lo que está pasando, pero sorprende muchísimo a los usuarios habituales todo el tiempo porque no se dan cuenta de que el navegador no sabe nada sobre la estructura jerárquica de cualquier sitio web en el que se encuentren.
¿Sería genial si los navegadores permitieran a los diseñadores de sitios programar el botón Atrás para hacer lo obvio (subir de nivel) en lugar de lo que hace ahora?
Editar: un comentarista preguntó si el navegador recarga la página o simplemente la muestra fuera de su caché local.
La respuesta es, depende. Los diseñadores de sitios pueden especificar si el navegador debe almacenar en caché la página o no. Para las páginas que están configuradas como no almacenadas en caché, el navegador vuelve a cargar la página desde el servidor cuando presiona Atrás, como si fuera la primera vez que la visita. Para las páginas almacenadas en caché, el navegador las muestra fuera de la caché, que es mucho más rápido.
Me gusta pensar en ello como volver a emitir mi última solicitud. Si realizó un GET simple, probablemente devolvería lo mismo que hizo la última vez (menos contenido dinámico). Si ha realizado un POST, volverá a enviar el formulario (después de la confirmación) al servidor.
La idea básica es volver a la última página o división lógica del sitio.
Al mirar Gmail, verá si hace una búsqueda y hace clic en un mensaje, luego presiona el botón Atrás y lo llevará de regreso a la búsqueda que hizo.
Cuando haga clic en él en la mayoría de los navegadores, reenviará la última solicitud http o cargará un caché si el navegador almacena sitios en caché.
Creo que la forma más fácil de explicar esto es en pseudocódigo:
class Page:
String url, ...
Page previous, next # implements a doubly-linked list
class History:
Page current # current page
void back():
if current.previous == null:
return
current = current.previous
refresh()
void forward():
if current.next == null:
return
current = current.next
refresh()
void loadPage(Page newPage):
newPage.previous = current
current.next = newPage # remove all the future pages
current = current.next
display(current)
Como desarrollador, debe asegurarse de que su aplicación web funcione sin importar cómo el navegador maneje el botón Atrás :-) ¿Reenvía la solicitud? ¿La nueva solicitud es idéntica a la anterior o difiere de alguna manera? ¿El navegador pedirá al usuario que confirme la re-POST? ¿Qué elementos de la página se volverán a solicitar y qué se cargará desde la caché? ¿Respetará el navegador mis encabezados de control de caché?
Las respuestas a estas preguntas dependen de la marca, la versión del navegador y la configuración del usuario. Diseñe su software para que todo esto no importe tanto.
Lo siento por una respuesta no muy directa, pero ya hay algunas respuestas directas aquí.
un navegador siempre almacena las páginas para recordarlas y cuando presionamos el botón Atrás, no envía la solicitud al servidor para la página anterior, sino que solo ve su caché donde almacenó las páginas y sigue la regla LIFO, por eso danos esa página primero al presionar el botón Atrás que abrimos en la última
¿El navegador carga la última página vista antes de la actual y luego sigue cualquier redirección que pueda ocurrir?
Parece que me estoy perdiendo el punto de la pregunta.