有没有办法使用Javascript使用浏览器的本机gzip解压缩?

Yas*_*wal 9 javascript gzip

后端服务器使用gzip文件进行响应,但没有 Content-Encoding: gzip header.而且我无法控制服务器,因此无法处理问题服务器端.

我现在需要的是使用javascript解压缩gzip压缩文件客户端.

我发现这个优秀的图书馆可以帮助我做到这一点:http://nodeca.github.io/pako/

但我不想添加额外的库只是为了解压缩文件.我觉得应该有一种方法可以使用浏览器的本机功能来解压缩.我对么?如果我错了,有人可以解释为什么这个浏览器功能不作为JavaScript API公开吗?有没有办法在javascript中解压缩文件而不添加额外的库?

joe*_*joe 18

Compression Streams API是一种新的 Web 标准,目前可在 Chromium、Firefox、Safari 和 Deno 中使用。

压缩流 API 的一些示例用法:

async function decompressBlob(blob) {
  let ds = new DecompressionStream("gzip");
  let decompressedStream = blob.stream().pipeThrough(ds);
  return await new Response(decompressedStream).blob();
}
Run Code Online (Sandbox Code Playgroud)

对于压缩:

const compressedReadableStream = inputReadableStream.pipeThrough(new CompressionStream('gzip'));
Run Code Online (Sandbox Code Playgroud)

您还可以使用WASM 实现显然, WASM 实现可以达到原生实现性能的 90%(大约是 JS 实现速度的 20 倍)。

也可以看看: