mirror of
https://github.com/nodejs/node.git
synced 2024-11-29 15:06:33 +01:00
96 lines
2.2 KiB
Markdown
96 lines
2.2 KiB
Markdown
|
## Zlib
|
||
|
|
||
|
You can access this module with:
|
||
|
|
||
|
var zlib = require('zlib');
|
||
|
var gzip = zlib.createGzip();
|
||
|
var fs = require('fs');
|
||
|
var inp = fs.createReadStream('input.txt');
|
||
|
var out = fs.createWriteStream('input.txt.gz');
|
||
|
|
||
|
inp.pipe(gzip).pipe(out);
|
||
|
|
||
|
This provides bindings to Gzip/Gunzip, Deflate/Inflate, and
|
||
|
DeflateRaw/InflateRaw classes. Each class takes the same options, and
|
||
|
is a readable/writable Stream.
|
||
|
|
||
|
### Constants
|
||
|
|
||
|
All of the constants defined in zlib.h are also defined on
|
||
|
`require('zlib')`. They are described in more detail in the zlib
|
||
|
documentation. See <http://zlib.net/manual.html#Constants>
|
||
|
for more details.
|
||
|
|
||
|
### zlib.Gzip
|
||
|
|
||
|
Compress data using gzip.
|
||
|
|
||
|
### zlib.Gunzip
|
||
|
|
||
|
Decompress a gzip stream.
|
||
|
|
||
|
### zlib.Deflate
|
||
|
|
||
|
Compress data using deflate.
|
||
|
|
||
|
### zlib.Inflate
|
||
|
|
||
|
Decompress a deflate stream.
|
||
|
|
||
|
### zlib.DeflateRaw
|
||
|
|
||
|
Compress data using deflate, and do not append a zlib header.
|
||
|
|
||
|
### zlib.InflateRaw
|
||
|
|
||
|
Decompress a raw deflate stream.
|
||
|
|
||
|
### zlib.Unzip
|
||
|
|
||
|
Decompress either a Gzip- or Deflate-compressed stream by auto-detecting
|
||
|
the header.
|
||
|
|
||
|
### Options
|
||
|
|
||
|
Each class takes an options object. All options are optional.
|
||
|
|
||
|
Note that some options are only
|
||
|
relevant when compressing, and are ignored by the decompression classes.
|
||
|
|
||
|
* chunkSize (default: 16*1024)
|
||
|
* windowBits
|
||
|
* level (compression only)
|
||
|
* memLevel (compression only)
|
||
|
* strategy (compression only)
|
||
|
|
||
|
See the description of `deflateInit2` and `inflateInit2` at
|
||
|
<http://zlib.net/manual.html#Advanced> for more information on these.
|
||
|
|
||
|
### Memory Usage Tuning
|
||
|
|
||
|
From `zlib/zconf.h`, modified to node's usage:
|
||
|
|
||
|
The memory requirements for deflate are (in bytes):
|
||
|
|
||
|
(1 << (windowBits+2)) + (1 << (memLevel+9))
|
||
|
|
||
|
that is: 128K for windowBits=15 + 128K for memLevel = 8
|
||
|
(default values) plus a few kilobytes for small objects.
|
||
|
|
||
|
For example, if you want to reduce
|
||
|
the default memory requirements from 256K to 128K, set the options to:
|
||
|
|
||
|
{ windowBits: 14, memLevel: 7 }
|
||
|
|
||
|
Of course this will generally degrade compression (there's no free lunch).
|
||
|
|
||
|
The memory requirements for inflate are (in bytes)
|
||
|
|
||
|
1 << windowBits
|
||
|
|
||
|
that is, 32K for windowBits=15 (default value) plus a few kilobytes
|
||
|
for small objects.
|
||
|
|
||
|
This is in addition to a single internal output slab buffer of size
|
||
|
`chunkSize`, which defaults to 16K.
|