目标
我的目标是下载单个网页以脱机运行,同时需要浏览器请求并显示该页面。
问题
以下命令下载页面并使其脱机完全可用,但是硬刷新的浏览器请求并显示页面大约需要5秒钟,大约需要35秒。有人可以帮我了解为什么我的wget
命令花费的时间这么长以及我如何使其更快?还是我可以在任何位置或聊天小组寻求帮助?衷心感谢您提供的任何帮助。
wget --page-requisites --span-hosts --convert-links --adjust-extension --execute robots=off --user-agent Mozilla --random-wait https://www.invisionapp.com/inside-design/essential-steps-designing-empathy/
上面的命令提供以下时间统计信息:
Total wall clock time: 35s
Downloaded: 248 files, 39M in 4.2s (9.36 MB/s)
为什么挂钟时间比下载时间长得多,并且有办法使其更快?
更多信息和尝试的解决方案
--random-wait
,因为我认为这可能会增加每个文件请求的时间,但这没做。--no-check-certificate
,但这没有任何作用。--inet4-only
,但这没做。--no-dns-cache
,但这没做。--convert-links
添加--no-clobber
来同时运行3至16个线程/进程的多个命令。多个文件将同时下载,下载完所有文件后,我可以再次运行命令,删除--no-clobber
和--page-requisites
并添加--convert-links
以使其完全脱机运行,但这什么也没做。我还认为多个线程可以加快速度,因为它可以一次执行多个,从而消除了https检查的延迟,但是我没有观察到这一点。 答案 0 :(得分:1)
wget使用单个连接并顺序下载所有内容,Web浏览器使用多个连接并同时下载所有内容,这使Web浏览器快得多。浏览器也会使用传输压缩,而wget不会(wtf wget?),这会使浏览器更快。浏览器也缓存了很多东西,这可能会使浏览器显示速度更快,因为它是从本地磁盘/内存缓存中加载未更改的内容,而不是实际下载东西,但是即使考虑到所有这些,5秒-> 35秒似乎也是很多
(可以使用libcurl的curl_multi api编写脚本来执行与wget命令相同的操作,可以同时使用多个连接和传输压缩,但这会需要很多工作)