01-资源压缩-zlib

74 阅读1分钟

资源压缩-zlib

简单的压缩

const fs = require("fs");
const zlib = require("zlib");

const gzip = zlib.createGzip();
const inFile = fs.createReadStream("./aaa.txt");
const out = fs.createWriteStream("./aaa.zip");

inFile.pipe(gzip).pipe(out);

解压缩

const fs = require("fs");
const zlib = require("zlib");
const gunzip = zlib.createGunzip();
const inFile = fs.createReadStream("./aaa.txt.gz");
const outFile = fs.createWriteStream("./aaa1.txt");

inFile.pipe(gunzip).pipe(outFile);

服务端 gzip 压缩 createGzip

const fs = require("fs");
const zlib = require("zlib");
const http = require("http");
const filePath = "./fileForGzip.html";

const server = http.createServer(function (req, res) {
  const acceptEncoding = req.headers["accept-encoding"];
  let gzip;
  // 判断是否需要gzip压缩
  if (acceptEncoding.indexOf("gzip" != -1)) {
    gzip = zlib.createGzip();
    // 记得响应 Content-Encoding,告诉浏览器:文件被 gzip 压缩过
    res.writeHead(200, {
      "Content-Encoding": "gzip",
    });
    fs.createReadStream(filePath).pipe(gzip).pipe(res);
  } else {
    fs.createReadStream(filePath).pipe(filePath).pipe(res);
  }
});
server.listen("3000");

服务端字符串 gzip 压缩 gzipSync

const http = require("http");
const zlib = require("zlib");
const responseText = "hello world";

const server = http.createServer(function (req, res) {
  const acceptEncoding = req.headers["accept-encoding"];
  if (acceptEncoding.indexOf("gzip") != -1) {
    res.writeHead(200, {
      "content-encoding": "gzip",
    });
    res.end(zlib.gzipSync(responseText));
  } else {
    res.end(responseText);
  }
});
server.listen("3000");