Essa foi a mesma pergunta feita aqui
Seu navegador mantém uma pilha (ou lista, se você quiser) das páginas da web que você visitou naquela janela. Digamos que sua página inicial seja google.com e, de lá, você visite alguns outros sites: youtube.com, yahoo.com e cnn.com. Ao visitar o último, a lista é assim:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Quando você pressiona o botão Voltar, o navegador leva você de volta à página anterior da lista, assim:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Neste ponto, você pode pressionar Voltar novamente para levá-lo ao youtube.com, ou você pode pressionar Avançar para colocá-lo no cnn.com novamente. Digamos que você pressione Voltar uma segunda vez:
google.com -> youtube.com -> yahoo.com -> cnn.com
^
|
current page
Se você for agora, digamos, abc.com, a lista muda para ficar assim:
google.com -> youtube.com -> abc.com
^
|
current page
Observe que tanto o yahoo.com quanto o cnn.com saíram da lista. Isso é porque você tomou um novo caminho. O navegador só mantém uma lista das páginas que você visitou para chegar onde você está agora, não um histórico de todas as páginas que você já visitou. O navegador também não sabe nada sobre a estrutura do site que você está visitando, o que pode levar a um comportamento surpreendente.
Você está em um site de compras (ne.com, como um breve exemplo) que tem categorias e subcategorias de produtos para navegar. O designer do site forneceu cuidadosamente breadcrumbs na parte superior da janela para permitir que você navegue pelas categorias . Você começa na página inicial do site, clica em Hardware e depois em Memória. A lista agora é assim:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem
^
|
current page
Você deseja voltar para a categoria Hardware, portanto, você usa os breadcrumbs para ir até a categoria pai em vez de usar o botão Voltar. Agora, a lista do navegador é assim:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
De acordo com a estrutura do site, você foi para trás (até um nível), mas para o navegador você foi para frente porque clicou em um link. Toda vez que você clica em um link ou digita um URL na barra de endereço, você avança no que diz respeito ao navegador, independentemente de esse link levar você a uma página em que você já esteve.
Por fim, você deseja retornar à página principal do site (ne.com). Você poderia usar os breadcrumbs, mas desta vez você clica no botão Voltar - parece óbvio que ele deve subir um nível, certo? Mas onde você leva?
Inicialmente, é confuso para muitos usuários (inclusive eu, quando acontece exatamente isso) que isso leva você a "descer" um nível, de volta para a categoria Memória. Olhando para a lista de páginas, é fácil perceber porquê:
google.com -> ne.com -> ne.com/hw -> ne.com/hw/mem -> ne.com/hw
^
|
current page
Para voltar para a página principal usando apenas o botão Voltar, você precisaria de mais duas impressoras, levando você de volta à categoria Hardware e, finalmente, à página principal. Parece tão óbvio para nós programadores o que está acontecendo, mas surpreende os usuários comuns o tempo todo porque eles não percebem que o navegador não sabe nada sobre a estrutura hierárquica de qualquer site em que eles estejam.
Seria ótimo se os navegadores permitissem que os projetistas de sites programassem o botão Voltar para fazer a coisa mais óbvia (elevá-lo um nível) em vez de fazer o que ele faz agora?
Editar: Um comentarista perguntou se o navegador recarrega a página ou simplesmente a exibe fora do cache local.
A resposta é que depende. Os designers de sites podem especificar se o navegador deve armazenar a página em cache ou não. Para páginas definidas como não armazenadas em cache, o navegador recarrega a página do servidor quando você pressiona Voltar, como se fosse a primeira vez que você a acessava. Para páginas armazenadas em cache, o navegador o exibe fora do cache, o que é muito mais rápido.