Szukałem w sieci tego pytania, ale nic nie znalazłem:
Jaka jest logika przycisku Wstecz? Co się dzieje, gdy klikamy przycisk Wstecz w przeglądarce internetowej?
Naprawdę chciałbym dowiedzieć się więcej na ten temat.
Dziękuję Ci.
Szukałem w sieci tego pytania, ale nic nie znalazłem:
Jaka jest logika przycisku Wstecz? Co się dzieje, gdy klikamy przycisk Wstecz w przeglądarce internetowej?
Naprawdę chciałbym dowiedzieć się więcej na ten temat.
Dziękuję Ci.
Odpowiedzi:
Twoja przeglądarka internetowa przechowuje stos (lub listę, jeśli wolisz) stron internetowych, które odwiedziłeś w tym oknie. Załóżmy, że Twoja strona główna to google.com i stamtąd odwiedzasz kilka innych witryn: youtube.com, yahoo.com i cnn.com. Po odwiedzeniu ostatniego lista wygląda następująco:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Po naciśnięciu przycisku Wstecz przeglądarka przeniesie Cię z powrotem do poprzedniej strony na liście, na przykład:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
W tym momencie możesz ponownie nacisnąć przycisk Wstecz, aby przejść do youtube.com, lub nacisnąć przycisk Dalej, aby ponownie przejść do witryny cnn.com. Powiedzmy, że naciśniesz Wstecz po raz drugi:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Jeśli teraz przejdziesz, powiedzmy, abc.com, lista zmieni się tak:
google.com -> youtube.com -> abc.com
^
|
current page
Zwróć uwagę, że zarówno yahoo.com, jak i cnn.com zniknęły z listy. To dlatego, że wybrałeś nową trasę. Przeglądarka przechowuje tylko listę stron, które odwiedziłeś, aby dostać się tam, gdzie jesteś, a nie historię wszystkich stron, na których kiedykolwiek byłeś. Przeglądarka również nie wie nic o strukturze odwiedzanej witryny, co może prowadzić do zaskakujących zachowań.
Jesteś w witrynie zakupów (na przykład ne.com), która zawiera kategorie i podkategorie produktów do przeglądania. Projektant witryna została starannie pod warunkiem, bułkę tartą w górnej części okna, aby umożliwić poruszanie się kategorie. Zaczynasz na górnej stronie witryny, kliknij Sprzęt, a następnie Pamięć. Lista wygląda teraz następująco:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem
^
|
current page
Chcesz wrócić do kategorii Sprzęt, więc możesz skorzystać z menu nawigacyjnego, aby przejść do kategorii nadrzędnej, zamiast używać przycisku Wstecz. Teraz lista przeglądarki wygląda następująco:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
Zgodnie ze strukturą witryny przeszedłeś wstecz (o jeden poziom w górę), ale do przeglądarki przeszedłeś do przodu, ponieważ kliknąłeś łącze. Za każdym razem, gdy klikniesz łącze lub wpiszesz adres URL w pasku adresu, przechodzisz dalej, jeśli chodzi o przeglądarkę, niezależnie od tego, czy łącze prowadzi do strony, na której już byłeś.
Na koniec chcesz wrócić do strony głównej witryny (ne.com). Możesz użyć bułki tartej, ale tym razem klikniesz przycisk Wstecz - wydaje się oczywiste, że powinno to zająć jeden poziom wyżej, prawda? Ale dokąd cię to prowadzi?
Początkowo dla wielu użytkowników (łącznie ze mną, kiedy robię dokładnie to), jest to mylące, że przenosi cię „w dół” o poziom, z powrotem do kategorii Pamięć. Patrząc na listę stron, łatwo zrozumieć, dlaczego:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
Powrót do strony głównej przy użyciu tylko przycisku Wstecz wymagałby dwóch kolejnych naciśnięć, przenoszących „z powrotem” do kategorii Sprzęt i na koniec do strony głównej. Nam, programistom, wydaje się oczywiste, co się dzieje, ale przez cały czas zaskakuje to zwykłych użytkowników, ponieważ nie zdają sobie sprawy, że przeglądarka nie wie nic o hierarchicznej strukturze strony, na której się znajdują.
Czy byłoby wspaniale, gdyby przeglądarki pozwoliły projektantom witryn zaprogramować przycisk Wstecz, aby zrobić oczywistą rzecz (podnieść poziom), a nie cokolwiek robi teraz?
Edycja: komentator zapytał, czy przeglądarka ponownie ładuje stronę, czy po prostu wyświetla ją z lokalnej pamięci podręcznej.
Odpowiedź brzmi: to zależy. Projektanci serwisu mogą określić, czy przeglądarka ma buforować stronę, czy nie. W przypadku stron, które są ustawione jako niebuforowane, przeglądarka ponownie ładuje stronę z serwera po naciśnięciu przycisku Wstecz, tak jakby była to pierwsza wizyta na niej. W przypadku stron w pamięci podręcznej przeglądarka wyświetla je poza pamięcią podręczną, co jest znacznie szybsze.
Lubię myśleć o tym jako o ponownym wysłaniu mojej ostatniej prośby. Jeśli wykonałeś proste GET, prawdopodobnie zwróci to samo, co zrobiłeś ostatnim razem (bez zawartości dynamicznej). Jeśli wykonałeś POST, zamierzasz ponownie przesłać formularz (po potwierdzeniu) na serwer.
Podstawowym pomysłem jest powrót do ostatniej strony lub logicznego podziału serwisu.
Patrząc na Gmaila, zobaczysz, czy wyszukasz i klikniesz wiadomość, a następnie klikniesz przycisk Wstecz, a zostaniesz przeniesiony z powrotem do wyszukiwania, które zrobiłeś.
Gdy klikniesz go w większości przeglądarek, wyśle ponownie ostatnie żądanie http lub załaduje pamięć podręczną, jeśli przeglądarka buforuje witryny.
Myślę, że najłatwiej to wyjaśnić za pomocą pseudokodu:
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)
Jako devoloper powinieneś upewnić się, że twoja aplikacja internetowa działa bez względu na to, jak przeglądarka obsługuje przycisk Wstecz :-) Czy ponownie wysyła żądanie? Czy nowe żądanie jest identyczne ze starym, czy też w jakikolwiek sposób się różni? Czy przeglądarka poprosi użytkownika o potwierdzenie ponownego POST? Jakie elementy strony będą ponownie zażądane, a które ładowane z pamięci podręcznej? Czy przeglądarka będzie przestrzegać moich nagłówków kontroli pamięci podręcznej?
Odpowiedzi na te pytania zależą od marki, wersji przeglądarki i ustawień użytkownika. Zaprojektuj oprogramowanie tak, aby to wszystko nie miało większego znaczenia.
Przepraszam za niezbyt bezpośrednią odpowiedź, ale jest tu już kilka prostych odpowiedzi.
przeglądarka zawsze zapisywała strony do zapamiętania, a kiedy klikamy przycisk Wstecz, nie wysyła żądania do serwera dla poprzedniej strony, zamiast tego widzi tylko swoją pamięć podręczną, w której zapisała strony i postępuje zgodnie z regułą LIFO, dlatego daj nam tę stronę jako pierwszą, naciskając przycisk Wstecz, który otworzyliśmy w ostatnim
Przeglądarka ładuje ostatnio przeglądaną stronę przed bieżącą, a następnie śledzi wszelkie przekierowania, które mogą się zdarzyć?
Wydaje mi się, że nie rozumiem sedna pytania.