pako.deflate不减少我的要求的大小

时间:2019-07-03 12:36:18

标签: javascript compression deflate pako

我有一个有效载荷较大的POST请求。我试图在向服务器发出请求之前用pako缩小它,以使其更小。但是,压缩版本的有效负载大小与未压缩版本的有效负载大小相同。我想念什么吗?

我要发送的选项的options.bodyJSON.stringify(largeJsonObject),长度超过1024。当我在“网络”标签中查看时,可以看到我的请求已发送,并且内容已编码,但是请求的大小与未压缩时的大小相同


  async fetch(path, options) {
    const headers = {
      Accept: 'application/json',
      'Content-Type': 'application/json',
    }

    if (
      options.method === 'POST' &&
      options.body &&
      options.body.length > 1024
    ) {
      headers['Content-Encoding'] = 'deflate'
      options.body = pako.deflate(options.body)
    }

    if (this.loggedIn()) {
      headers['Authorization'] = 'Bearer ' + this.getToken()
      if (this.willTokenExpireSoon()) {
        await this.refreshToken()
      }
    }

    return fetch(process.env.REACT_APP_API_HOST + path, {
      headers,
      ...options,
    }).then(this._checkStatus)
  }

1 个答案:

答案 0 :(得分:0)

这是PICNIC错误(椅子不在电脑上的问题)。我的服务器正在处理POST请求,保存了一些数据,然后未压缩将对象返回给客户端。这就是为什么“网络”选项卡显示请求大小相同的原因-请求中的有效负载较小,但响应正文仍然很大

为解决此问题,我还在服务器中添加了pako.deflate