是否有推荐的方法通过命令行实用程序获取包含所有引用图像、CSS 和 javascript 文件的 URL 的字节大小(普通访问者在页面完全加载到浏览器中之前必须接收的字节数)?类似(虚构)的东西:
wget --output-format=mozilla-archive-format --with-referenced-content --compression=0 \
'http://www.example.com/' > temp.maff && stat -c%s temp.mapp ; rm temp.maff
我同意限制,例如,不包括由脚本动态生成和加载的引用,……。仅是基本信息,当一个 15,000 字节的 HTML 页面中包含 3,985,000 字节的图像时,得到 4,000,000 就已经值得一看了。我目前有一个 Perl 脚本执行非常基本的操作:
#!/usr/bin/perl
use URI;
$html = `wget -qO - '$ARGV[0]'`;
$sum = length($html);
while($html =~ /\bsrc="(.*?)"/g){
$url = URI->new_abs($1, $ARGV[0]);
$head = `curl -I --silent '$url'`;
if($head =~ /Content-Length: ?(\d+)/){
$size = scalar($1);
}else{
$size = length(`wget -qO - '$url'`);
}
$sum += $size;
}
print "$sum\n";
然而,这有很多缺点。仅跟踪一级链接,没有脚本评估,……。任何更好的方法,也许是使用成熟工具的单行,将不胜感激。
答案1
相关wget
选项是-p
/--page-requisites
:
此选项使 Wget 下载正确显示给定 HTML 页面所需的所有文件。这包括内联图像、声音和引用的样式表等内容。
-H
--span-hosts
如果页面使用其他网站(gravatar、google API)的任何内容,也建议使用/ 。
-O
/--output-document
会将其全部输出到单个文件,没有任何标记或结构。大多数时候这并不是很有帮助,但如果您只需要知道它的大小就足够了。
wget -p -H 'http://www.example.com/' -O tempfile
wc -c < tempfile