eggjs开启gzip压缩的方法

栏目: EggJs 发布时间:2024-11-01

服务器开启 gzip 是网站性能优化的一种基础方法,对用户请求的数据进行压缩传输,可以减少数据传输,提供访问速度。

gzip 的原理是服务器端对数据进行压缩,浏览器端再进行解压,以达到减少带宽占用,提高响应速度的目的。

eggjs 开启 gzip 压缩的方法

1、安装 koa-is-json 和 zlib

npm i koa-is-json zlib
# or
yarn add koa-is-json zlib

2、创建 gzip 中间件

// // 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.default.js 中加入下面的配置就完成了中间件的开启和配置

module.exports = {
  // 配置需要的中间件,数组顺序即为中间件的加载顺序
  middleware: [ 'gzip' ],

  // 配置 gzip 中间件的配置
  gzip: {
    threshold: 1024, // 小于 1k 的响应体不压缩
  },
};

www.tides.cn 开启 gzip 实际效果

www.tides.cn gzip

以上就是 eggjs 开启 gzip 的方法,简简单单,轻松搞定。

完成以上配置后,我们再到浏览器看 network,资源的网络传输尺寸已经被大幅压缩。赶紧动手配起来吧!

本文地址:https://www.tides.cn/p_eggjs-gzip