在 Firefox 中使用 Ctrl+S 保存网页是否会使浏览器再次加载站点?

425*_*g4e 57 firefox download

在 Firefox 中使用Ctrl+保存网站以供离线阅读时S,我注意到虽然网页已经加载,但下载过程需要几秒钟才能完成。

我想知道这样保存网页是否会让 Firefox 再次获取所有内容(HTML、图像、JavaScript、CSS 等),或者它是否只会从缓存中已加载的文件中获取它。

小智 68

不,它不会触发第二个请求。

我只是通过运行一个简单的 HTTP 服务器来记录请求来测试它。服务器在保存网站时没有收到第二个请求。

  • 测试:Ubuntu 18.04 上的 Firefox 61.0.1(64 位)
  • 服务器:python 2.7.15 ( python -m SimpleHTTPServer 7070) 的SimpleHTTPServer 模块

编辑:

如果服务器发送“无缓存”标头,评论者会询问不同的行为。我用Pragma: No-Cache和对其进行了测试,Cache-Control: No-Cache结果保持不变。

我用来做测试的代码(通过这个答案):

#!/usr/bin/env python
import SimpleHTTPServer

class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_my_headers()

        SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)

    def send_my_headers(self):
        self.send_header("Pragma", "No-Cache")
        self.send_header("Cache-Control", "No-Cache")


if __name__ == '__main__':
    SimpleHTTPServer.test(HandlerClass=MyHTTPRequestHandler)
Run Code Online (Sandbox Code Playgroud)


Wil*_*ard 11

不,它没有。

我刚刚通过断开计算机与 Internet 的连接,然后保存一个已加载的网页,在没有任何代码的情况下对此进行了测试。

有效。你可以自己做同样的测试。


当然,如果计算机在线或离线,行为可能会有所不同,但当前的最佳答案显示了更深入的测试。我只是觉得做一个简单的测试还是有价值的。

  • Expires、Cache-control、Pragma 和可能的其他标头的组合太多了,“不在这种情况下”当然并不意味着“从不”。不看源代码,我不会赌任何东西。 (11认同)
  • @GuntramBlohm,绝对正确。另一方面,如果简单测试*失败*,那么您可以明确地得出结论,Ctrl-S 在不向服务器发送额外请求的情况下不会*总是* 工作,即使它可能*有时* 这样做。所以简单的测试还是有价值的;我很惊讶没有其他人提到它,所以我做了。 (5认同)

Dav*_*ill 7

保存网页 ( ctrls)是否会使 Firefox 再次获取所有内容?

这可以使用 Firefox 的开发人员工具轻松测试。

  • 打开工具并单击“网络”选项卡。

  • 保存页面

您将看到没有生成额外的网络流量。

  • 我怀疑在这种情况下我们是否可以依赖开发人员工具。它只显示来自单个选项卡的流量,我认为下载不是在该选项卡的上下文中运行的。我认为根据您的推理,在您尚未访问的链接上使用上下文菜单中的“另存为”应该会显示在网络选项卡中 - 但它没有。 (50认同)
  • 我不怀疑它使用缓存,我只是怀疑开发人员工具可用于证明这一点。我希望“另存为”和“保存页面”的行为方式相同,但当然可能存在差异。所以这里有另一个想法:如果我们在开发人员工具中禁用缓存,使用 ctrl+s 肯定会显示在网络选项卡中,但同样没有。 (11认同)
  • @kapex 我刚刚拔掉了互联网连接,但仍然能够正确保存页面...... (5认同)