Zum Inhalt springen

Compression Streams

Streaming-Komprimierung mit gzip, deflate, Brotli und Zstandard.

Auf dieser Seite
Open in ChatGPTOpen in Claude

CompressionStream und DecompressionStream stellen eine beschreibbare Eingabe und eine lesbare Ausgabe bereit.

FormatToken
Gzipgzip
Deflate mit Zlib-Wrapperdeflate
Rohes Deflatedeflate-raw
Brotlibrotli
Zstandardzstd

Brotli und Zstandard sind Elide-Erweiterungen der Standard-Formatmenge von Browsern. Der Formatabgleich beachtet Groß- und Kleinschreibung; ein unbekannter Wert wirft TypeError.

async function collect(stream, input) {
  const writer = stream.writable.getWriter();
  const reader = stream.readable.getReader();
  const chunks = [];

  const reading = (async () => {
    while (true) {
      const { value, done } = await reader.read();
      if (done) break;
      chunks.push(value);
    }
  })();

  await writer.write(input);
  await writer.close();
  await reading;

  const size = chunks.reduce((total, chunk) => total + chunk.byteLength, 0);
  const output = new Uint8Array(size);
  let offset = 0;
  for (const chunk of chunks) {
    output.set(chunk, offset);
    offset += chunk.byteLength;
  }
  return output;
}

const input = new TextEncoder().encode("hello");
const compressed = await collect(new CompressionStream("gzip"), input);
const restored = await collect(new DecompressionStream("gzip"), compressed);

Eingaben müssen BufferSource-Werte sein. Fehlerhafte oder unvollständige komprimierte Daten führen zur Ablehnung der Transformation. Die Dekomprimierung wendet außerdem Sicherheitsgrenzen des Hosts auf übermäßige Ausgabe an.

APIs mit Callbacks und Buffern sind unter node:zlib beschrieben.

Reference

Status: Full · Not measured · since 1.1.0

Exports

ExportKindStatusNotes
CompressionStreamclassFullreadable, writable
DecompressionStreamclassFullreadable, writable

War diese Seite hilfreich?