Ctrl当使用 Firefox 中的+保存网站以供离线阅读时S,我注意到虽然网页已经加载,但下载过程需要几秒钟才能完成。
我想知道这样保存网页是否会让 Firefox 第二次获取所有内容(HTML、图像、JavaScript、CSS 等),或者是否只会从缓存中已加载的文件中获取。
答案1
不,它不会触发第二次请求。
我只是通过运行一个简单的 HTTP 服务器来记录请求来测试它。保存网站时,服务器没有收到第二个请求。
- 测试环境:Ubuntu 18.04 上的 Firefox 61.0.1(64 位)
- 服务器:python 2.7.15的SimpleHTTPServer模块(
python -m SimpleHTTPServer 7070
)
编辑:
评论者询问如果服务器发送“no-cache”标头,行为会有什么不同。我用和进行了测试,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)
答案2
不,不是的。
我刚刚测试了这一点,无需任何代码,只需断开我的计算机与互联网的连接,然后保存一个已加载的网页即可。
成功了。你可以自己做同样的测试。
假设行为可以计算机在线或离线时会有所不同,但当前最佳答案显示了更深入的测试。我只是认为拥有一个简单的测试。
答案3
答案4
有可能。
CSS 有一个@media
选择器。它允许 CSS 根据用于显示页面的硬件类型(打印机、不同尺寸的屏幕等)使用不同的定义。
CSS 还可以直接请求图像文件(项目符号图像、背景图像)。
现在,如果 Firefox 在显示页面时仅下载当前硬件所需的内容,但在保存到磁盘时下载所有内容,那么您可以有额外的请求。
警告:
这只是实际有用的答案的前半部分;后半部分将测试这种情况。不幸的是,我的时间不多了,所以如果有人能报告可重复的测试结果,我会接受任何编辑或评论。