Javascript 如何估计gzip脚本的大小?

Javascript 如何估计gzip脚本的大小?,javascript,gzip,minify,Javascript,Gzip,Minify,在gzip之后,如何估计JavaScript文件的大小?有在线工具吗?或者它类似于使用winzip,例如?如果您在unix上-gzip-c filename.min.js | wc-c将为您提供gzip文件的字节计数允许您粘贴代码,并提供gzip前后特定文件的压缩比 您可以使用纯打印和纯空白选项来估计非精简内容的压缩 如果您需要估算: 从100个经过相同缩小管道的JS文件开始 对于每个文件,计算gzip-c“$f”| wc-c和wc-c“$f” 这些比率的平均值是类似JS文件预期压缩的近似值

在gzip之后,如何估计JavaScript文件的大小?有在线工具吗?或者它类似于使用winzip,例如?

如果您在unix上-
gzip-c filename.min.js | wc-c
将为您提供gzip文件的字节计数

允许您粘贴代码,并提供gzip前后特定文件的压缩比

您可以使用纯打印和纯空白选项来估计非精简内容的压缩

如果您需要估算:

  • 从100个经过相同缩小管道的JS文件开始
  • 对于每个文件,计算
    gzip-c“$f”| wc-c
    wc-c“$f”
  • 这些比率的平均值是类似JS文件预期压缩的近似值
包含Windows的
gzip
wc
的命令行实现。

支持压缩为gzip格式。 我经常使用它来近似和比较文件大小

创建存档时,请查找
存档格式
,第三个选项是
gzip

更新: 在评论中,我们讨论了7-zip的GZIP压缩与实际服务器的GZIP压缩之间可能存在差异。因此,我比较了仅使用的主页。
谷歌GZIP的有效载荷为36678字节。“gzip正常”设置的7-zip为35559(小3%)。“gzip最快”设置为37673(大3%)


因此,长话短说:7-zip的结果准确率约为97%

将为您提供缩小和gzip比率和大小。

您可以通过在Windows上安装
gzip

直接从终端

gzip -9 -c path/to/file.js | wc -c | numfmt --to=iec-i --suffix=B --padding=10
如果您需要压缩的原始尺寸

cat path/to/file.js | wc -c | numfmt --to=iec-i --suffix=B --padding=10

要通过编程获得它,有如下实用程序。它是一个节点包,但可以作为通用工具进行全局安装。

如果要比较整个文件夹的未压缩、gzip和brotli文件大小:(假设要筛选
*.js
):

示例输出(选项卡分隔,以便可以复制到电子表格):


使用node core,您可以使用zlib.gzip缓冲区的长度来确定gzip大小:

const fs = require('fs');
const util = require('util');
const zlib = require('zlib');
const readFile = util.promisify(fs.readFile);
const gzip = util.promisify(zlib.gzip);

const getGzipSize = filePath => readFile(filePath)
  .then(gzip)
  .then(x => x.length);

@Christophe:gzip在Windows上可以通过Cygwin或UnxUtils获得。谢谢,通过执行
gunzip-cmyfile | wc-c
zcat-myfile | wc-c
来了解未压缩文件的未压缩字节大小也很有用:
cat filename.js | wc-c
。thx!我将尝试Cygwin,但现在闭包编译器给了我所需的答案。对不起,它可以生成*比大多数CLI GZIP打包程序更小的存档。如果你想要最小的,那就太好了;如果你想要一个精确的字节数,那就太坏了,因为大多数web服务器都在运行(我想这就是我想要的场景?@Tombyler谢谢你提供的信息……你能用任何文档来备份它吗?7-zip有很多gzip选项,也许其中一些可以配置为与CLI gzip匹配。这是我现在能看到的最好的测试。一周前我对gzip与7zip与zopfli做了一个小的gzip比较;我还需要添加更多测试和格式化会增加时间。同时,你为什么不提供这样的测试来证明你的观点呢?:@Tombyer哦,我想你有点困惑。也许我需要重新解释我的答案。7-Zip(应用程序)支持多种压缩格式,包括GZIP。我不是说7z(压缩格式),这无疑比gzip好。好吧,我用一个快速测试更新了我的答案。我测试了google.com,发现7-zip小了3%。对大多数人来说,这应该是可以接受的。删除了不必要的临时文件的使用,并将输出保存到
filesizes.log
。在输出中添加逗号以提高可读性会话级别为9,以匹配已达到的最大brotli压缩级别11。*.js;do printf“$file\t$(cat$file | wc-c | xargs printf”%'d\n”)\t$(gzip-9c$file | wc-c | xargs printf”%d\n”)\t$(brotli-cZ$file | wc-c | xargs printf”%d\n)\n”完成
for file in *.js; do printf "$file\t$(cat $file | wc -c)\t$(gzip -kc7 $file | wc -c)\t$(brotli --in $file --out temp.br --force --quality 11 && cat temp.br | wc -c)\n"; done | tee filesizes.log
foo.js 39035   10150   8982
bar.js 217000  68978   56337
const fs = require('fs');
const util = require('util');
const zlib = require('zlib');
const readFile = util.promisify(fs.readFile);
const gzip = util.promisify(zlib.gzip);

const getGzipSize = filePath => readFile(filePath)
  .then(gzip)
  .then(x => x.length);