He buscado en la Web acerca de esta pregunta pero no he encontrado nada:

Cuál es la lógica de que el botón atrás? Lo que está sucediendo al pulsar el botón atrás en un navegador Web?

Realmente me gustaría entender más acerca de eso.

Gracias.

  • Hace enviar la petición o no de la carga de la página desde la caché local? ¿Las cookies que se crearon en la primera respuesta se enviará cuando usted golpea la espalda? etc.

8 Comentarios

  1. 94

    Su navegador web mantiene una pila (o lista, si se quiere) de las páginas web que usted ha visitado en esa ventana. Digamos que su página de inicio es google.com y desde allí se puede visitar algunos otros sitios web: youtube.com, yahoo.com y cnn.com. En la visita a la última, la lista se parece a esto:

    google.com -> youtube.com -> yahoo.com -> cnn.com
                                                ^
                                                |
                                           current page
    

    Cuando usted pulse el botón Atrás, el navegador te lleva a la página anterior en la lista, como este:

    google.com -> youtube.com -> yahoo.com -> cnn.com
                                                ^
                                                |
                                           current page
    

    En este punto, usted puede presionar de nuevo para llevarlo a youtube.com o puede presionar para poner en cnn.com de nuevo. Digamos que usted presione de nuevo una segunda vez:

    google.com -> youtube.com -> yahoo.com -> cnn.com
                                                ^
                                                |
                                           current page
    

    Si ahora van a decir, abc.com la lista de cambios en este aspecto:

    google.com -> youtube.com -> abc.com
                                   ^
                                   |
                              current page
    

    Tenga en cuenta que tanto yahoo.com y cnn.com se han ido de la lista. Esto es porque usted tomó una nueva ruta. El navegador sólo mantiene una lista de las páginas que ha visitado para llegar a donde está ahora, no un historial de todas las páginas que he sido. El navegador también no sabe nada acerca de la estructura del sitio que estás visitando, que puede conducir a un comportamiento sorprendente.

    Estás en un sitio de compras (ne.com como un breve ejemplo) que ha categorías y subcategorías de productos para navegar a través de. El diseñador del sitio ha proporcionadas cuidadosamente pan rallado cerca de la parte superior de la ventana para que usted pueda navegar a través de las categorías. Empiece en la parte superior de la página del sitio, haga clic en Hardware, entonces la Memoria. La lista ahora se parece a esto:

    google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem
                                               ^
                                               |
                                          current page
    

    Desea volver a la categoría Hardware, por lo que el uso de la miga de pan para subir a la categoría principal en lugar de utilizar el botón Atrás. Ahora el navegador de la lista se parece a esto:

    google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
                                                              ^
                                                              |
                                                         current page
    

    De acuerdo a la estructura del sitio, usted se fue hacia atrás (un nivel), pero para el navegador que salió adelante porque usted hizo clic en un enlace. En cualquier momento que usted haga clic en un enlace o escriba una dirección URL en la barra de direcciones, usted va hacia adelante tan lejos como el navegador es de que se trate, ya sea o no que el enlace te lleva a una página que ya ha sido.

    Por último, desea volver a la página principal de la página (ne.com). Usted podría utilizar la miga de pan, pero esta vez haga clic en el botón Atrás, parece obvio que debe usted tomar un nivel más arriba, a la derecha? Pero, ¿de dónde toma usted?

    Es un principio confuso para muchos usuarios (incluido yo mismo, cuando me toca hacer exactamente esto) de que lleva «hacia abajo» de un nivel, de vuelta a la Memoria de la categoría. Mirando 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 utilizando sólo el botón Atrás, se requerirían dos más prensas, teniendo que «volver» a la categoría de Hardware y, finalmente, a la página principal. Parece tan obvio para nosotros los programadores lo que está pasando, pero que sorprende a los diablos de los usuarios regulares todo el tiempo porque ellos no se dan cuenta de que el navegador no sabe nada acerca de la estructura jerárquica de cualquier sitio web que se encuentren en.

    Sería genial si los navegadores sería dejar que los diseñadores del sitio programa el botón Atrás para hacer lo obvio (que lo lleva hasta un nivel), en lugar de lo que hace ahora?

    Edit: Un comentarista preguntó si el navegador vuelve a cargar la página o simplemente la muestra de su caché local.

    La respuesta es depende. Los diseñadores del sitio puede especificar si el navegador debe almacenar en caché la página o no. Para las páginas que se establecen como no-en caché, el navegador vuelve a cargar la página desde el servidor cuando se presiona de nuevo, como si fuera la primera vez que se visita. Para las páginas en caché, el navegador muestra de la memoria caché, que es mucho más rápido.

    • Cuando el navegador se busca en la caché, no se comprueba la fecha de caducidad que aparece en el encabezado de la respuesta del servidor? Supongo que si la página se ha expirado, el navegador enviará a la espalda de la misma consulta, ¿no? Hace get y post son tratados de la misma manera en el sentido de que el botón atrás? Gracias por tu gran respuesta.
    • Primera pregunta: sí, eso es correcto. Si la página ha caducado, el navegador debe volver a solicitar la página utilizando la misma dirección URL y datos de envío. Pero para después de las operaciones, la mayoría de los navegadores pregunte al usuario si desea volver a enviarlo. Mi conjetura es volver a enviar los datos de envío que potencialmente podría resultar en duplicados de publicaciones, las transacciones duplicadas, etc. Es el diseñador del sitio para evitar que eso suceda.
    • Sí, pero en el caso de un POST, creo que el navegador le preguntará sólo en el caso de los POST que ha caducado. Estoy en lo cierto? Porque cuando yo estaba haciendo trabajo de desarrollo con ASP.net el botón atrás estaba publicando de nuevo al servidor sin preguntar.
    • Probablemente depende del navegador. Mi navegador (Safari) siempre se pregunta-por lo menos yo creo siempre pidiendo.
    • Yo estaba usando Safari. No preguntar siempre. Debe ser siguiendo la lógica que he descrito.
    • Muy buena respuesta, debo decir +1.
    • «Los diseñadores del sitio puede especificar si el navegador debe almacenar en caché la página o no». Cómo especificar esto ? El uso de JS o Jquery ?

  2. 5

    Me gusta pensar que es como volver a publicar mi última petición. Si usted realiza un sencillo de CONSEGUIR, probablemente sería devolver la misma cosa que lo hizo la última vez (menos de contenido dinámico). Si había hecho un POST, vas a volver a enviar el formulario (después de la confirmación) para el servidor.

  3. 2

    La idea básica es volver a la última página o sitio lógico división.

    Mirando Gmail verás si usted hace una búsqueda y haga clic en un mensaje, a continuación, pulse el botón te llevará de vuelta a la búsqueda de lo que usted hizo.

    Cuando haga clic en ella en la mayoría de los navegadores ya sea para enviar el último petición http o se carga una memoria caché si la caché del navegador sitios.

    • Cuando se hace el navegador utiliza la caché y cuando no se vuelva a enviar una solicitud?
    • Depende del navegador y lo que había hecho hasta ese momento. Usted puede configurar la mayoría de los navegadores no caché y así siempre van a cargar. Hay un HTML metatag para el almacenamiento en caché, pero respetando el hecho de que es hasta el navegador.
  4. 2

    Creo que la forma más sencilla de explicar esto es que 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)
    
  5. 1

    Un historial de las páginas visitadas se guardan en una pila como la forma. Cuando «pop» en la parte superior de tres páginas (a, B, C, por ejemplo) y, a continuación, ir a una página diferente a la D, usted no puede llegar a la B de nuevo por golpear hacia adelante.

  6. 0

    Como un devoloper, usted debe asegurarse de que su webapp funciona no importa cómo el navegador se encarga el botón Atrás 🙂 Hace volver a enviar la solicitud? Es la nueva solicitud idéntica a la anterior, o no se diferencian de ninguna manera? Navegador preguntar al usuario para confirmar la re-POST? ¿Qué elementos de la página se re-pidió y lo carga desde la memoria caché? Navegador respeto a mi encabezados cache-control?

    Respuestas a estas preguntas dependen de hacer, la versión del navegador y la configuración de usuario. Diseño de software para que todo esto no importa mucho.

    Lo siento por no muy directa en la respuesta, pero hay algunas respuestas directas aquí ya.

    • Ay, teniendo en cuenta todos los posibles efectos del botón atrás algo que impulsa a la mayoría de los desarrolladores loco, yo incluido.
  7. 0

    un navegador siempre se almacenan las páginas de su recuerdo y cuando se pulsa el botón atrás
    no enviar la solicitud al servidor de la página anterior en lugar de sólo ver su caché
    donde se almacenan las páginas y que siga la regla LIFO es por eso que nos dan que la página de primeras
    al pulsar el botón atrás que hemos abierto en los últimos

    • No, no vamos a eso! Si la caché no es válida, se envía una petición al servidor para obtener de nuevo la página.
  8. -1

    El navegador carga la última página visitada, antes de la actual, y luego sigue la redirección que podría pasar?

    Un poco me parece que falta el punto de la cuestión.

    • Probablemente desee deshabilitar el botón en la parte trasera o evitar su uso. La buena suerte.

Dejar respuesta

Please enter your comment!
Please enter your name here