Как работает кнопка «Назад» в веб-браузере?

Я искал в Интернете этот вопрос, но ничего не нашел:

Какова логика кнопки «Назад»? Что происходит, когда мы нажимаем кнопку «Назад» в веб-браузере?

Я действительно хотел бы понять больше об этом.

Спасибо.

 Jimmy21 авг. 2009 г., 21:29
Повторно отправляет запрос или загружает страницу из локального кэша? Получают ли файлы cookie, созданные в первом ответе, при ответном ударе? и т.п.

Ответы на вопрос(8)

поп» верхние три страницы (например, A, B, C) и затем переход на другую страницу D, вы не можете снова попасть в B, нажав вперед.

чтобы вернуться на последнюю страницу или разделить логический сайт.

Глядя на Gmail выПосмотрим, сделаете ли вы поиск и нажмете на сообщение, затем нажмите кнопку «Назад», и вы вернетесь к поиску, который вы сделали.

Когда вы щелкаете по нему в большинстве браузеров, он либо отправляет последний http-запрос, либо загружает кэш, если браузер кэширует сайты.

 Pierre Thibault21 авг. 2009 г., 21:29
Когда браузер использует кеш и когда он отправляет запрос?
 BobBrez21 авг. 2009 г., 21:36
Это зависит от браузера и того, что было сделано до этого момента. Вы можете настроить большинство браузеров не на кеширование, поэтому они всегда будут перезагружаться Существует метатег HTML для кеширования, но с уважением относится к браузеру.

вы должны убедиться, что ваше веб-приложение работает независимо от того, как браузер обрабатывает кнопку «Назад» :-) Повторная отправка запроса? Новый запрос идентичен старому или он чем-то отличается? Будет ли браузер запрашивать у пользователя повторную отправку? Какие элементы страницы будут повторно запрошены, а какие загружены из кеша? Будет ли браузер уважать мои заголовки контроля кэша?

Ответы на эти вопросы зависят от производителя, версии браузера и пользовательских настроек. Разработайте свое программное обеспечение так, чтобы все это неэто не имеет большого значения.

Извините за не очень прямой ответ, но здесь уже есть несколько прямых ответов.

 Louise30 июн. 2015 г., 13:28
Увы, учитывая все возможные эффекты кнопки «назад», я думаю, что это сводит с ума большинство разработчиков.

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)

и когда мы нажимаем кнопку «Назад», он неОн не отправляет запрос на сервер для предыдущей страницы, вместо этого он просто видит свой кэш, в котором он хранит страницы, и следует правилу LIFO, поэтому он сначала выдает нам эту страницу при нажатии кнопки «Назад», которую мы открыли в последнюю

 Pierre Thibault03 сент. 2010 г., 17:48
Нет, это не работает, пусть это! Если кеш больше не действителен, он отправляет запрос обратно на сервер, чтобы снова получить страницу.

. Если вы выполнили простой GET, он, вероятно, вернул бы то же самое, что и в прошлый раз (за исключением динамического содержимого). Если вы сделали POST, выВы собираетесь повторно отправить форму (после подтверждения) на сервер.

а затем следует любое перенаправление, которое может произойти?

Кажется, я упускаю суть вопроса.

 John Hoven21 авг. 2009 г., 21:25
Они, вероятно, хотят отключить кнопку «назад» - или запретить ее использование. Удачи.
Решение Вопроса

если хотите) веб-страниц, которые вы посетили в этом окне. Позволять'Например, ваша домашняя страница - google.com, а оттуда вы посещаете несколько других веб-сайтов: youtube.com, yahoo.com и cnn.com. При посещении последнего, список выглядит так:

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

Когда вы нажимаете кнопку «Назад», браузер возвращает вас к предыдущей странице в списке, например:

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

В этот момент вы можете снова нажать Назад, чтобы перейти на youtube.com, или нажать Вперед, чтобы снова попасть на cnn.com. Позволять'скажем, вы нажимаете Назад во второй раз:

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

Если вы сейчас перейдете, скажем, на abc.com, список изменится так:

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

Обратите внимание, что yahoo.com и cnn.com исчезли из списка. Это потому, что вы выбрали новый маршрут. Браузер поддерживает только список страниц, которые вы посетили, чтобы попасть туда, где вы сейчас находитесь, а не историю каждой страницы, которую вы 'когда-либо был Браузер также неничего о структуре сайта вы не знаетеповторное посещение, которое может привести к неожиданному поведению.

Вы'на сайте покупок (например, ne.com), где есть категории и подкатегории товаров для просмотра. Дизайнер сайта продуманно предоставилпанировочные сухари в верхней части окна, чтобы позволить вам перемещаться по категориям. Вы начинаете с верхней страницы сайта, нажимаете «Оборудование», затем «Память». Список теперь выглядит так:

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

Вы хотите вернуться в категорию «Оборудование», поэтому вы используете хлебные крошки, чтобы перейти в родительскую категорию, а не кнопку «Назад». Теперь список браузеров выглядит так:

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

Согласно структуре сайта, вы пошли назад (на уровень выше), но в браузере вы пошли вперед, потому что вы нажали на ссылку. Каждый раз, когда вы нажимаете на ссылку или вводите URL-адрес в адресной строке, вы продвигаетесь вперед в том, что касается браузера, независимо от того, переносит ли эта ссылка вас на страницу, которую вымы уже были

Наконец, вы хотите вернуться на главную страницу сайта (ne.com). Вы можете использовать хлебные крошки, но на этот раз вы нажмете кнопку «Назад» - кажется очевидным, что это должно поднять вас на один уровень, верно? Но где это взять тебя?

Это'поначалу сбивает с толку многих пользователей (включая меня, когда я именно так и поступаю), что вам это нужно "вниз" уровень, обратно в категорию памяти. Глядя на список страниц, это 'Легко понять, почему:

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

Чтобы вернуться на главную страницу, используя только кнопку «Назад», потребуется еще два нажатия, чтобы выназад» в категорию «Оборудование» и, наконец, на главную страницу. Нам, программистам, так очевидно, чтопроисходит, но это удивляет постоянных пользователей все время, потому что они нене понимаю, что браузер неничего не знаю об иерархической структуре любого сайта, на котором они оказались.

Было бы замечательно, если бы браузеры позволяли дизайнерам сайтов программировать кнопку «Назад», чтобы сделать очевидную вещь (поднять вас на уровень), а не то, что она делает сейчас?

Редактировать: комментатор спросил, загружает ли браузер страницу или просто отображает ее из локального кэша.

Ответ зависит. Дизайнеры сайта могут указать, должен ли браузер кэшировать страницу или нет. Для страниц, которые настроены как некэшированные, браузер перезагружает страницу с сервера при нажатии кнопки Назад, как если бы вы впервые ее посещали. Для кэшированных страниц браузер выводит их из кэша, что намного быстрее.

 huzefa biyawarwala04 сент. 2017 г., 08:44
Дизайнеры сайта могут указать, должен ли браузер кэшировать страницу или нет », Как это указать? Используете JS или Jquery?
 Pierre Thibault21 авг. 2009 г., 22:21
Когда браузер смотрит в кеш, проверяет ли он срок годности в заголовке ответа сервера? Я предполагаю, что если срок действия страницы истек, браузер отправит тот же запрос, не так ли? Работает ли get и post одинаково в отношении кнопки возврата? Спасибо за ваш отличный ответ.
 Pierre Thibault22 авг. 2009 г., 01:01
Я использовал Safari. Это не всегда спрашивают. Это должно следовать логике, которую я описал.
 Rahul30 мая 2015 г., 20:13
Очень хороший ответ, я должен сказать +1. "
 Barry Brown22 авг. 2009 г., 00:01
Вероятно, зависит от браузера. Мой браузер (Safari) всегда спрашивает - по крайней мере, ясчитать Это'всегда спрашиваю.
 Pierre Thibault21 авг. 2009 г., 23:27
Да, но в случае POST, я думаю, что браузер будет запрашивать только в случае POST, который истек. Я прав? Потому что, когда я занимался разработкой с ASP.net, кнопка «Назад» снова отправляла сообщения на сервер, не спрашивая.
 Barry Brown21 авг. 2009 г., 22:52
Первый вопрос: да, этоправильно. Если срок действия страницы истек, браузер должен повторно запросить страницу, используя тот же URL-адрес и данные POST. Но для операций POST большинство браузеров спрашивают пользователя, хотят ли они повторно отправить его. Я предполагаю, что повторная отправка данных POST потенциально может привести к дублированию проводок, дублированию транзакций и т. Д.до дизайнера сайта, чтобы предотвратить это.

Ваш ответ на вопрос