Ваш веб-браузер хранит стопку (или список, если хотите) веб-страниц, которые вы посетили в этом окне. Допустим, вашей домашней страницей является 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
Чтобы вернуться на главную страницу с помощью только кнопки «Назад», потребуется еще два нажатия, чтобы вернуть вас «назад» в категорию «Оборудование» и, наконец, на главную страницу. Для программистов это кажется настолько очевидным, что происходит, но это удивляет постоянных пользователей все время, потому что они не понимают, что браузер ничего не знает об иерархической структуре любого веб-сайта, на котором они оказались.
Было бы замечательно, если бы браузеры позволяли дизайнерам сайтов программировать кнопку Назад, чтобы сделать очевидную вещь (поднять вас на уровень), а не то, что она делает сейчас?
Редактировать. Комментатор спросил, загружает ли браузер страницу или просто выводит ее из локального кэша.
Ответ - это зависит. Дизайнеры сайта могут указать, должен ли браузер кэшировать страницу или нет. Для страниц, которые настроены как некэшированные, браузер перезагружает страницу с сервера при нажатии кнопки Назад, как если бы вы впервые ее посещали. Для кэшированных страниц браузер выводит их из кэша, что намного быстрее.