【问题标题】:JS - Compressing increases request sizeJS - 压缩会增加请求大小
【发布时间】:2021-06-23 19:50:21
【问题描述】:

我正在尝试压缩我的请求,但它似乎只是增加了请求的大小:

    const requestData = LZString.compress(
      JSON.stringify({ data: bigBase64StringHere })
    );

    await axios.post("api-endpoint", requestData, {
      headers: { "Content-Type": "text/plain" },
    });

当我 console.log 原始字符串和压缩字符串时 - 压缩字符串更大(原始 400K 与压缩 500K)。当我记录它们的计算大小时 - 压缩的大小是原始大小的一半(原始 800K 与压缩 330K)。

使用console.log进行日志记录:

未压缩大小:

压缩后的尺寸:​​m>

使用sizeof进行日志记录:

(顶部未压缩,底部压缩)

这给了我压缩声称要达到的结果:

pieroxy.net/blog/pages/lz-string/demo.html

可能是压缩实际上正在工作,但 Content-Length 标头是请求大小的不良指标?

【问题讨论】:

    标签: javascript google-chrome axios request compression


    【解决方案1】:

    请记住,“压缩”实体可能比原始实体更大。这是因为必须添加额外的数据(压缩表和其他元数据),并且取决于源和压缩算法。在您的情况下,我会比较生成的字符串大小并使用较小的字符串,并相应地设置压缩头。

    如果您正在压缩的数据类型不能始终如一地为您提供良好的压缩率,那么它可能根本不值得。最后,尝试改变压缩算法。

    【讨论】:

    • 基于demo:pieroxy.net/blog/pages/lz-string/demo.html,字符串大小是原来的一半。会不会是我用来发送数据的格式不对?
    • @K41F4r 您的原始数据类型是什么,您如何将其转换为 Base64 字符串?您是将原始数据的大小与压缩结果进行比较,还是将 Base64 字符串的大小与生成的压缩字符串进行比较?
    • base64 字符串是一个文件,所以我将 base64 字符串与生成的压缩(字符串?)进行比较
    • 可能是压缩实际上正在工作,但 Content-Length 标头对大小来说是一个不好的指标?当我 console.log 原始字符串并压缩一个时 - 压缩后的字符串更大。当我记录它们的计算大小时 - 压缩后的大小是原始大小的一半。
    • @K41F4r 如果您从this file 的第70 行读取,您会发现使用Buffer.from() 将字符串转换为缓冲区,然后Content-Length 的大小来自buffer.length。请记住,它以字节为单位。所以这应该不是问题。您如何测量有效载荷大小?
    猜你喜欢
    • 2019-12-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2017-04-22
    • 1970-01-01
    相关资源
    最近更新 更多