Vue组件上报监控数据时,压缩后的JSON体积反而更大怎么办?

IT人红梅 阅读 23

我在Vue项目里做监控上报,想用gzip压缩数据再发送,但发现压缩后的base64字符串比原始JSON还大20%。用的是pako库,数据量大概3KB左右,这是为什么呢?


<template>
  <button @click="sendData">提交监控数据</button>
</template>

<script>
import { deflate } from 'pako';

export default {
  methods: {
    sendData() {
      const data = { /* 3KB的监控数据 */ };
      const compressed = deflate(JSON.stringify(data));
      // 转base64时体积反而变大
      const payload = btoa(String.fromCharCode.apply(null, new Uint8Array(compressed)));
      fetch('/api/log', { body: payload });
    }
  }
}
</script>

尝试过调整压缩级别和用不同的编码方式,但效果都不好。如果压缩没效果,是不是应该换其他方案?或者数据量小的时候确实不适合用gzip?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
Mr.美菊
Mr.美菊 Lv1
数据量太小,gzip压缩效率低,base64再膨胀就更大了。直接发原始JSON,别折腾压缩。

<script>
export default {
methods: {
sendData() {
const data = { /* 3KB的监控数据 */ };
fetch('/api/log', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
}
}
}
</script>


小数据就该简单处理,别整那些花里胡哨的。
点赞
2026-02-14 17:12