有人能解释一下网络浏览器中的后退按钮是如何工作的吗?浏览器会存储上一个网页/网站的地址或 HTML 代码吗?
我之所以有这个疑问,是因为我在 YouTube 上播放一首歌时,我按了返回键。如果浏览器加载了地址https://www.youtube.com,也就是上一页,推荐应该有所改变。但它并没有改变。它回到了 YouTube 主页上我之前所在的那个页面。
答案1
大多数网络浏览器都会保存您上次访问的页面的缓存副本,因此您可以更快地返回这些页面(无需重新加载)。如果您想重新加载,您必须要求浏览器执行此操作(按 F5 或单击重新加载按钮)。
答案2
这也是同样的问题这里
您的网络浏览器会保存您在该窗口中访问过的网页的堆栈(或列表,如果您愿意的话)。假设您的主页是 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
如果只使用“返回”按钮返回主页,则需要再按两次,这样您才能“返回”到“硬件”类别,最后返回到主页。对于我们程序员来说,这似乎很明显,但它总是让普通用户大吃一惊,因为他们没有意识到浏览器对他们所访问的网站的层次结构一无所知。
如果浏览器可以让网站设计人员对“后退”按钮进行编程,使其执行显而易见的操作(将您提升一级)而不是现在所做的任何操作,那是不是很棒?
编辑:一位评论者询问浏览器是否重新加载页面还是仅仅从本地缓存中显示它。
答案是视情况而定。网站设计者可以指定浏览器是否缓存页面。对于设置为非缓存的页面,当您按“返回”时,浏览器会从服务器重新加载页面,就像您第一次访问该页面一样。对于缓存的页面,浏览器会从缓存中显示它,这样速度要快得多。