Compression — reduces response size for faster transfers.
1const compression = require("compression");23app.use(compression({4 level: 6, // compression level (1-9)5 threshold: 1024, // minimum size to compress6 filter: (req, res) => {7 if (req.headers["x-no-compression"]) return false;8 return compression.filter(req, res);9 },10}));1112// Manual compression13const zlib = require("zlib");1415app.get("/data", (req, res) => {16 const data = JSON.stringify(largeObject);1718 const accepted = req.headers["accept-encoding"];1920 if (accepted.includes("br")) {21 res.setHeader("Content-Encoding", "br");22 res.send(zlib.brotliCompressSync(data));23 } else if (accepted.includes("gzip")) {24 res.setHeader("Content-Encoding", "gzip");25 res.send(zlib.gzipSync(data));26 } else if (accepted.includes("deflate")) {27 res.setHeader("Content-Encoding", "deflate");28 res.send(zlib.deflateSync(data));29 } else {30 res.send(data);31 }32});
Brotli vs Gzip: