<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Zlib ~~~ 穩定度: 3 - 穩定 ~~~ 你可以這樣引入此模塊: ~~~ var zlib = require('zlib'); ~~~ 這個模塊提供了對Gzip/Gunzip, Deflate/Inflate和DeflateRaw/InflateRaw類的綁定。每一個類都可以接收相同的選項,并且本身也是一個可讀寫的Stream類。 ### 例子 壓縮或解壓縮一個文件可以通過導流一個 fs.ReadStream 到一個 zlib 流,然后到一個 fs.WriteStream 來完成。 ~~~ inp.pipe(gzip).pipe(out); ~~~ 一步壓縮或解壓縮數據可以通過快捷方法來完成。 ~~~ var buffer = new Buffer('eJzT0yMAAGTvBe8=', 'base64'); zlib.unzip(buffer, function(err, buffer) { if (!err) { console.log(buffer.toString()); } }); ~~~ 要在 HTTP 客戶端或服務器中使用此模塊,請在請求和響應中使用 [accept-encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3) 和 [content-encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) 頭。 **注意:這些例子只是極其簡單地展示了基礎的概念** Zlib 編碼消耗非常大,結果需要緩存.看下面的[內存調優](#) 中更多的關于Zlib用法中 速度/內存/壓縮 的權衡取舍。 ~~~ // 注意: 這不是一個不合格的 accept-encoding 解析器 // 詳見 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3 if (acceptEncoding.match(/\bdeflate\b/)) { response.writeHead(200, { 'content-encoding': 'deflate' }); raw.pipe(zlib.createDeflate()).pipe(response); } else if (acceptEncoding.match(/\bgzip\b/)) { response.writeHead(200, { 'content-encoding': 'gzip' }); raw.pipe(zlib.createGzip()).pipe(response); } else { response.writeHead(200, {}); raw.pipe(response); } }).listen(1337); ~~~ ### zlib.createGzip([options]) 以 [options](#) 所給選項返回一個新的 [Gzip](#) 對象。 ### zlib.createGunzip([options]) 以 [options](#) 所給選項返回一個新的 [Gunzip](#) 對象。 ### zlib.createDeflate([options]) 以 [options](#) 所給選項返回一個新的 [Deflate](#) 對象。 ### zlib.createInflate([options]) 以 [options](#) 所給選項返回一個新的 [Inflate](#) 對象。 ### zlib.createDeflateRaw([options]) 以 [options](#) 所給選項返回一個新的 [DeflateRaw](#) 對象。 ### zlib.createInflateRaw([options]) 以 [options](#) 所給選項返回一個新的 [InflateRaw](#) 對象。 ### zlib.createUnzip([options]) 以 [options](#) 所給選項返回一個新的 [Unzip](#) 對象。 ### 類: zlib.Zlib 這個類未被 `zlib` 模塊導出,編入此文檔是因為它是其它壓縮器/解壓縮器的基類。 ### zlib.flush([kind], callback) `kind` 缺省為 `zlib.Z_FULL_FLUSH`。 寫入緩沖數據。請勿輕易調用此方法,過早的寫入會對壓縮算法的作用產生影響。 ### zlib.params(level, strategy, callback) 動態更新壓縮級別和壓縮策略。僅對 deflate 算法有效。 ### zlib.reset() 將壓縮器/解壓縮器重置為缺省值。僅對 inflate 和 deflate 算法有效。 ### 類: zlib.Gzip 使用 gzip 壓縮數據。 ### 類: zlib.Gunzip 解壓縮一個 gzip 流。 ### 類: zlib.Deflate 使用 deflate 壓縮數據。 ### 類: zlib.Inflate 解壓縮一個 deflate 流。 ### 類: zlib.DeflateRaw 使用 deflate 壓縮數據,并且不附帶 zlib 頭。 ### 類: zlib.InflateRaw 解壓縮一個原始 deflate 流。 ### 類: zlib.Unzip 自動識別頭部來解壓縮一個以 gzip 或 deflate 壓縮的流。 ### 快捷方法 所有這些方法的第一個參數都可以是字符串或 Buffer;可選地可以將傳給 zlib 類的選項作為第二個參數傳入;回調格式為 `callback(error, result)`。 ### zlib.deflate(buf, [options], callback) 使用 Deflate 壓縮一個字符串。 ### zlib.deflateRaw(buf, [options], callback) 使用 DeflateRaw 壓縮一個字符串。 ### zlib.Gzip(buf, [options], callback) 使用 Gzip 壓縮一個字符串。 ### zlib.gunzip(buf, [options], callback) 使用 Gunzip 解壓縮一個原始的 Buffer。 ### zlib.inflate(buf, [options], callback) 使用 Inflate 解壓縮一個原始的 Buffer。 ### zlib.inflateRaw(buf, [options], callback) 使用 InflateRaw 解壓縮一個原始的 Buffer。 ### zlib.unzip(buf, [options], callback) 使用 Unzip 解壓縮一個原始的 Buffer。 ### 選項 各個類都有一個選項對象。所有選項都是可選的。 請注意有些選項僅對壓縮有效,并會被解壓縮類所忽略。 - flush(缺省:`zlib.Z_NO_FLUSH`) - chunkSize(缺省:16*1024) - windowBits - level(僅用于壓縮) - memLevel(僅用于壓縮) - strategy(僅用于壓縮) - dictionary(僅用于 deflate/inflate,缺省為空目錄) 詳情請參閱 [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced) 的 `deflateInit2` 和 `inflateInit2`。 ### 內存使用調優 來自 `zlib/zconf.h`,修改為 node 的用法: deflate 的內存需求(按字節): ~~~ (1 << (windowBits+2)) + (1 << (memLevel+9)) ~~~ 表示:windowBits = 15 的 128K + memLevel = 8 的 128K(缺省值)加上其它對象的若干 KB。 舉個例子,如果您需要將缺省內存需求從 256K 減少到 128K,設置選項: ~~~ { windowBits: 14, memLevel: 7 } ~~~ 當然這通常會降低壓縮等級(天底下沒有免費午餐)。 inflate 的內存需求(按字節): ~~~ 1 << windowBits ~~~ 表示 windowBits = 15(缺省值)的 32K 加上其它對象的若干 KB。 這是除了內部輸出緩沖外 `chunkSize` 的大小,缺省為 16K。 zlib 壓縮的速度主要受壓縮級別 `level` 的影響。更高的壓縮級別會有更好的壓縮率,但也要花費更長時間。更低的壓縮級別會有較低壓縮率,但速度更快。 通常,使用更多內存的選項意味著 node 能減少對 zlib 的調用,因為單次 `write`操作能處理更多數據。因此,這是另一個影響速度和內存占用的因素。 ### 常量 所有在 zlib.h 中定義的常量同樣也定義在 `require('zlib')` 中。 在通常情況下您幾乎不會用到它們,編入文檔只是為了讓您不會對它們的存在感到驚訝。該章節幾乎完全來自 [zlib 的文檔](http://zlib.net/manual.html#Constants)。詳見 [http://zlib.net/manual.html#Constants](http://zlib.net/manual.html#Constants)。 允許的 flush 取值。 - `zlib.Z_NO_FLUSH` - `zlib.Z_PARTIAL_FLUSH` - `zlib.Z_SYNC_FLUSH` - `zlib.Z_FULL_FLUSH` - `zlib.Z_FINISH` - `zlib.Z_BLOCK` - `zlib.Z_TREES` 壓縮/解壓縮函數的返回值。負數代表錯誤,正數代表特殊但正常的事件。 - `zlib.Z_OK` - `zlib.Z_STREAM_END` - `zlib.Z_NEED_DICT` - `zlib.Z_ERRNO` - `zlib.Z_STREAM_ERROR` - `zlib.Z_DATA_ERROR` - `zlib.Z_MEM_ERROR` - `zlib.Z_BUF_ERROR` - `zlib.Z_VERSION_ERROR` 壓縮級別。 - `zlib.Z_NO_COMPRESSION` - `zlib.Z_BEST_SPEED` - `zlib.Z_BEST_COMPRESSION` - `zlib.Z_DEFAULT_COMPRESSION` 壓縮策略。 - `zlib.Z_FILTERED` - `zlib.Z_HUFFMAN_ONLY` - `zlib.Z_RLE` - `zlib.Z_FIXED` - `zlib.Z_DEFAULT_STRATEGY` data_type 字段的可能值。 - `zlib.Z_BINARY` - `zlib.Z_TEXT` - `zlib.Z_ASCII` - `zlib.Z_UNKNOWN` deflate 壓縮方法(該版本僅支持一種)。 - `zlib.Z_DEFLATED` 初始化 zalloc/zfree/opaque。 - `zlib.Z_NULL`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看