Я искал в Интернете этот вопрос, но ничего не нашел:
Какая логика кнопки назад? Что происходит, когда мы нажимаем кнопку «Назад» в веб-браузере?
Я действительно хотел бы больше узнать об этом.
Спасибо.
browser
back-button
Пьер Тибо
источник
источник
Ответы:
Ваш веб-браузер хранит стек (или список, если хотите) веб-страниц, которые вы посетили в этом окне. Допустим, ваша домашняя страница - google.com, а оттуда вы посещаете еще несколько веб-сайтов: youtube.com, yahoo.com и cnn.com. При посещении последней список выглядит так:
Когда вы нажимаете кнопку «Назад», браузер возвращает вас на предыдущую страницу в списке, например:
На этом этапе вы можете снова нажать «Назад», чтобы перейти на youtube.com, или нажать «Вперед», чтобы снова перейти на cnn.com. Допустим, вы нажимаете Back во второй раз:
Если вы теперь перейдете, скажем, на abc.com, список изменится и будет выглядеть следующим образом:
Обратите внимание, что yahoo.com и cnn.com исчезли из списка. Это потому, что вы выбрали новый маршрут. Браузер поддерживает только список страниц, которые вы посетили, чтобы попасть туда, где вы сейчас находитесь, а не историю каждой страницы, на которой вы когда-либо были. Браузер также ничего не знает о структуре посещаемого вами сайта, что может привести к неожиданному поведению.
Вы находитесь на сайте покупок (например, ne.com), на котором есть категории и подкатегории продуктов для просмотра. Дизайнер сайта вдумчиво предоставил хлебные крошки в верхней части окна, чтобы вы могли перемещаться по категориям. Вы начинаете с верхней страницы сайта, нажимаете «Оборудование», затем «Память». Список теперь выглядит так:
Вы хотите вернуться в категорию «Оборудование», поэтому вместо кнопки «Назад» используйте навигационные цепочки для перехода к родительской категории. Теперь список браузеров выглядит так:
Согласно структуре сайта вы пошли назад (на уровень выше), но в браузере вы пошли вперед, потому что вы перешли по ссылке. Каждый раз, когда вы нажимаете ссылку или вводите URL-адрес в адресной строке, вы продвигаетесь вперед в том, что касается браузера, независимо от того, ведет ли эта ссылка на страницу, на которой вы уже были.
Наконец, вы хотите вернуться на главную страницу сайта (ne.com). Вы можете использовать панировочные сухари, но на этот раз вы нажмете кнопку «Назад» - кажется очевидным, что это должно поднять вас на один уровень, верно? Но куда это вас приведет?
Изначально многих пользователей (включая меня, когда я делаю именно это) сбивает с толку, что вы «спускаетесь» на уровень ниже, обратно в категорию памяти. Глядя на список страниц, легко понять, почему:
Чтобы вернуться на главную страницу, используя только кнопку «Назад», потребуется еще два нажатия, которые вернут вас «назад» в категорию «Оборудование» и, наконец, на главную страницу. Нам, программистам, кажется настолько очевидным, что происходит, но это постоянно удивляет обычных пользователей, потому что они не понимают, что браузер ничего не знает об иерархической структуре любого веб-сайта, на котором они оказались.
Было бы здорово, если бы браузеры позволяли дизайнерам сайтов программировать кнопку «Назад» так, чтобы она делала очевидную вещь (поднимала вас на уровень выше), а не то, что она делает сейчас?
Изменить: комментатор спросил, перезагружает ли браузер страницу или просто отображает ее из локального кеша.
Ответ в зависимости от обстоятельств. Дизайнеры сайта могут указать, должен ли браузер кэшировать страницу или нет. Для страниц, которые настроены как некэшированные, браузер перезагружает страницу с сервера при нажатии кнопки «Назад», как если бы вы посещали ее впервые. Для кешированных страниц браузер отображает их из кеша, что намного быстрее.
источник
Мне нравится думать об этом как о повторной выдаче моего последнего запроса. Если вы выполнили простой GET, он, вероятно, вернет то же самое, что и в прошлый раз (за вычетом динамического содержимого). Если вы выполнили POST, вы собираетесь повторно отправить форму (после подтверждения) на сервер.
источник
Основная идея - вернуться к последней странице или логическому разделу сайта.
Посмотрев на Gmail, вы увидите, если вы выполните поиск и щелкните сообщение, а затем нажмите кнопку «Назад», это вернет вас к выполненному вами поиску.
Когда вы щелкаете по нему в большинстве браузеров, он либо повторно отправит последний HTTP-запрос, либо загрузит кеш, если браузер кэширует сайты.
источник
Я думаю, что самый простой способ объяснить это - псевдокод:
источник
История просмотренных страниц хранится в виде стека. Когда вы «открываете» три верхние страницы (например, A, B, C), а затем переходите на другую страницу D, вы не можете снова попасть на B, нажав вперед.
источник
Как уполномоченный, вы должны убедиться, что ваше веб-приложение работает независимо от того, как браузер обрабатывает кнопку «Назад» :-) Отправляет ли он запрос повторно? Новый запрос идентичен старому или чем-то отличается? Будет ли браузер запрашивать у пользователя подтверждение повторной POST? Какие элементы страницы будут запрашиваться повторно, а какие загружаться из кеша? Будет ли браузер учитывать мои заголовки управления кешем?
Ответы на эти вопросы зависят от производителя, версии браузера и пользовательских настроек. Создавайте программное обеспечение так, чтобы все это не имело большого значения.
Извините за не очень прямой ответ, но здесь уже есть несколько прямых ответов.
источник
браузер всегда сохранял страницы для запоминания, и когда мы нажимаем кнопку возврата, он не отправляет запрос на сервер для предыдущей страницы, вместо этого он просто видит свой кеш, в котором он хранил страницы, и он следует правилу LIFO, поэтому он дайте нам эту страницу первой, нажав кнопку "Назад", которую мы открыли в последнем
источник
Браузер загружает последнюю просмотренную страницу перед текущей, а затем выполняет любое перенаправление, которое может произойти?
Мне кажется, я упускаю суть вопроса.
источник