1.安裝 zlib
yarn add zlib
2.創建中間件
app/middleware/gzip.js
const isJSON = require("koa-is-json"); const zlib = require("zlib"); module.exports = (options) => { return async function gzip(ctx, next) { await next(); // 后續中間件執行完成后將響應體轉換成 gzip let body = ctx.body; if (!body) return; // 支持 options.threshold if (options.threshold && ctx.length < options.threshold) return; if (isJSON(body)) body = JSON.stringify(body); // 設置 gzip body,修正響應頭 const stream = zlib.createGzip(); stream.end(body); ctx.body = stream; ctx.set("Content-Encoding", "gzip"); }; };
3.配置
config/config.default.js
// add your middleware config here config.middleware = ["gzip"]; config.gzip = { threshold: 1024, // 小於 1k 的響應體不壓縮 };
.