Wie funktioniert die Schaltfläche Zurück in einem Webbrowser?

83

Ich habe im Internet nach dieser Frage gesucht, aber nichts gefunden:

Was ist die Logik der Zurück-Taste? Was passiert, wenn wir in einem Webbrowser auf die Schaltfläche "Zurück" klicken?

Ich würde wirklich gerne mehr darüber verstehen.

Danke dir.

Pierre Thibault
quelle
14
Sendet es die Anforderung erneut oder lädt es die Seite aus dem lokalen Cache? Werden Cookies, die in der ersten Antwort erstellt wurden, gesendet, wenn Sie zurückschlagen? usw.
Jimmy

Antworten:

98

Ihr Webbrowser führt einen Stapel (oder eine Liste, wenn Sie so wollen) der Webseiten, die Sie in diesem Fenster besucht haben. Angenommen, Ihre Homepage ist google.com und von dort aus besuchen Sie einige andere Websites: youtube.com, yahoo.com und cnn.com. Beim Besuch des letzten sieht die Liste folgendermaßen aus:

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

Wenn Sie die Zurück-Taste drücken, kehrt der Browser wie folgt zur vorherigen Seite in der Liste zurück:

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

An diesem Punkt kannst du erneut auf Zurück drücken, um zu youtube.com zu gelangen, oder auf Weiterleiten, um dich erneut auf cnn.com zu bringen. Angenommen, Sie drücken ein zweites Mal auf Zurück:

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

Wenn Sie jetzt beispielsweise zu abc.com gehen, ändert sich die Liste folgendermaßen:

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

Beachten Sie, dass sowohl yahoo.com als auch cnn.com aus der Liste entfernt wurden. Dies liegt daran, dass Sie eine neue Route eingeschlagen haben. Der Browser verwaltet nur eine Liste der Seiten, die Sie besucht haben, um dorthin zu gelangen, wo Sie sich gerade befinden, und nicht einen Verlauf jeder Seite, auf der Sie jemals waren. Der Browser weiß auch nichts über die Struktur der Website, die Sie besuchen, was zu überraschendem Verhalten führen kann.

Sie befinden sich auf einer Einkaufsseite (ne.com, als kurzes Beispiel), auf der Kategorien und Unterkategorien von Produkten durchsucht werden können. Der Site-Designer hat oben im Fenster sorgfältig Brotkrumen bereitgestellt , damit Sie durch die Kategorien navigieren können. Sie beginnen auf der oberen Seite der Site, klicken auf Hardware und dann auf Speicher. Die Liste sieht jetzt so aus:

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

Sie möchten zur Kategorie Hardware zurückkehren, verwenden also die Breadcrumbs, um zur übergeordneten Kategorie zu gelangen, anstatt die Schaltfläche Zurück zu verwenden. Jetzt sieht die Browserliste folgendermaßen aus:

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

Entsprechend der Site-Struktur sind Sie rückwärts gegangen (eine Ebene höher), aber zum Browser sind Sie vorwärts gegangen, weil Sie auf einen Link geklickt haben. Jedes Mal, wenn Sie auf einen Link klicken oder eine URL in die Adressleiste eingeben, werden Sie in Bezug auf den Browser weitergeleitet, unabhängig davon, ob dieser Link Sie zu einer Seite führt, auf der Sie bereits waren.

Schließlich möchten Sie zur Hauptseite der Website (ne.com) zurückkehren. Sie könnten die Semmelbrösel verwenden, aber diesmal klicken Sie auf die Schaltfläche Zurück - es scheint offensichtlich, dass Sie damit eine Ebene höher gehen sollten, oder? Aber wohin führt es dich?

Für viele Benutzer (ich selbst eingeschlossen, wenn ich genau das tue) ist es zunächst verwirrend, dass Sie eine Ebene zurück in die Kategorie "Speicher" gelangen. Wenn Sie sich die Liste der Seiten ansehen, können Sie leicht erkennen, warum:

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

Um nur mit der Schaltfläche Zurück zur Hauptseite zurückzukehren, müssen Sie zwei weitere Male drücken, um zur Kategorie Hardware und schließlich zur Hauptseite zurückzukehren. Uns Programmierern scheint es so offensichtlich zu sein, was los ist, aber es überrascht die normalen Benutzer ständig, weil sie nicht erkennen, dass der Browser nichts über die hierarchische Struktur der Website weiß, auf der sie sich gerade befinden.

Wäre es großartig, wenn Browser den Website-Designern erlauben würden, die Schaltfläche Zurück zu programmieren, um das Offensichtliche zu tun (Sie auf eine höhere Ebene zu bringen), anstatt was auch immer es jetzt tut?

Bearbeiten: Ein Kommentator fragte, ob der Browser die Seite neu lädt oder sie einfach aus dem lokalen Cache anzeigt.

Die Antwort ist, es kommt darauf an. Site-Designer können angeben, ob der Browser die Seite zwischenspeichern soll oder nicht. Bei Seiten, die als nicht zwischengespeichert festgelegt sind, lädt der Browser die Seite vom Server neu, wenn Sie auf Zurück klicken, als wäre es das erste Mal, dass Sie sie besuchen. Bei zwischengespeicherten Seiten zeigt der Browser diese aus dem Cache an, was viel schneller ist.

Barry Brown
quelle
5
Überprüft der Browser beim Durchsuchen des Caches das Ablaufdatum im Header der Serverantwort? Ich denke, wenn die Seite abgelaufen ist, sendet der Browser die gleiche Anfrage zurück, nein? Werden get und post in Bezug auf den Zurück-Button gleich behandelt? Vielen Dank für Ihre gute Antwort.
Pierre Thibault
5
Erste Frage: Ja, das stimmt. Wenn die Seite abgelaufen ist, sollte der Browser die Seite unter Verwendung derselben URL- und POST-Daten erneut anfordern. Bei POST-Vorgängen fragen die meisten Browser den Benutzer jedoch, ob er sie erneut senden möchte. Ich vermute, dass das erneute Senden der POST-Daten möglicherweise zu doppelten Buchungen, doppelten Transaktionen usw. führen kann. Es ist Sache des Site-Designers, dies zu verhindern.
Barry Brown
Ja, aber im Falle eines POST denke ich, dass der Browser nur im Falle eines abgelaufenen POST fragt. Habe ich recht? Denn als ich mit ASP.net entwickelte, wurde die Schaltfläche "Zurück" erneut auf dem Server veröffentlicht, ohne zu fragen.
Pierre Thibault
Kommt wohl auf den Browser an. Mein Browser (Safari) fragt immer - zumindest denke ich, dass er immer fragt.
Barry Brown
Ich habe Safari benutzt. Es fragt nicht immer. Es muss der von mir beschriebenen Logik folgen.
Pierre Thibault
5

Ich stelle es mir gerne so vor, als würde ich meine letzte Anfrage erneut stellen. Wenn Sie ein einfaches GET ausführen, wird wahrscheinlich das gleiche zurückgegeben wie beim letzten Mal (abzüglich dynamischer Inhalte). Wenn Sie einen POST durchgeführt haben, senden Sie das Formular (nach Bestätigung) erneut an den Server.

John Hoven
quelle
2

Die Grundidee besteht darin, zur letzten Seite oder logischen Site-Unterteilung zurückzukehren.

Wenn Sie sich Google Mail ansehen, sehen Sie, ob Sie eine Suche durchführen und auf eine Nachricht klicken. Klicken Sie dann auf die Schaltfläche "Zurück", um zu der von Ihnen durchgeführten Suche zurückzukehren.

Wenn Sie in den meisten Browsern darauf klicken, wird entweder die letzte http-Anforderung erneut gesendet oder ein Cache geladen, wenn der Browser Websites zwischenspeichert.

BobBrez
quelle
Wann verwendet der Browser den Cache und wann sendet er eine Anfrage erneut?
Pierre Thibault
Dies hängt vom Browser ab und davon, was bis zu diesem Zeitpunkt getan wurde. Sie können festlegen, dass die meisten Browser nicht zwischengespeichert werden, sodass sie immer neu geladen werden. Es gibt ein HTML-Metatag für das Caching, das jedoch dem Browser überlassen bleibt.
BobBrez
2

Ich denke, der einfachste Weg, dies zu erklären, ist der Pseudocode:

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)
Imagist
quelle
1

Ein Verlauf der angezeigten Seiten wird in einer stapelartigen Form gespeichert. Wenn Sie die oberen drei Seiten "einblenden" (z. B. A, B, C) und dann zu einer anderen Seite D wechseln, können Sie nicht wieder zu B gelangen, indem Sie vorwärts klicken.

Kajaco
quelle
0

Als Entwickler sollten Sie sicherstellen, dass Ihre Webanwendung funktioniert, unabhängig davon, wie der Browser mit der Schaltfläche Zurück umgeht :-) Sendet er die Anforderung erneut? Ist die neue Anfrage mit der alten identisch oder unterscheidet sie sich in irgendeiner Weise? Wird der Browser den Benutzer auffordern, den erneuten POST zu bestätigen? Welche Elemente der Seite werden erneut angefordert und welche werden aus dem Cache geladen? Wird der Browser meine Cache-Steuerungs-Header respektieren?

Die Antworten auf diese Frage hängen von der Marke, der Version eines Browsers und den Benutzereinstellungen ab. Entwerfen Sie Ihre Software so, dass all dies nicht so wichtig ist.

Entschuldigung für die nicht sehr direkte Antwort, aber hier gibt es bereits einige klare Antworten.

Ilya Birman
quelle
Leider unter Berücksichtigung aller möglichen Auswirkungen des Zurück-Buttons etwas, das die meisten Entwickler verrückt macht, mich eingeschlossen.
Louise
0

Ein Browser hat die Seiten immer zum Speichern gespeichert. Wenn wir auf die Schaltfläche "Zurück" klicken, wird die Anforderung für die vorherige Seite nicht an den Server gesendet. Stattdessen wird nur der Cache angezeigt, in dem die Seiten gespeichert wurden, und er folgt der LIFO-Regel Geben Sie uns diese Seite zuerst, indem Sie den Zurück-Knopf drücken, den wir zuletzt geöffnet haben

Dileep Kumar
quelle
2
Nein, es funktioniert nicht, lass das! Wenn der Cache nicht mehr gültig ist, sendet er eine Anforderung an den Server zurück, um die Seite erneut abzurufen.
Pierre Thibault
-1

Der Browser lädt die zuletzt angezeigte Seite vor der aktuellen und folgt dann einer möglichen Umleitung.

Mir scheint der Punkt der Frage irgendwie zu fehlen.

code_burgar
quelle
Sie möchten wahrscheinlich die Zurück-Taste deaktivieren - oder ihre Verwendung verhindern. Viel Glück.
John Hoven