Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

【中间件】文件压缩

  • 安装

    npm i -S koa-compress
    
  • 使用写法

    let zlib = await import('zlib');
    app.use(compress({
        filter (content_type) {
            return /text|javascript|css/.test(content_type)
        },
        threshold: 512,
        gzip: {
          flush: zlib.default.constants.Z_SYNC_FLUSH
        },
        deflate: {
          flush: zlib.default.constants.Z_SYNC_FLUSH,
        },
    }));
    
    • 必须要使用await,否则后面flush拿不到常量
    • 配置项
      • filter:这里巨坑,要把官网案例中的text补充上javascript和css,这样在请求js和css文件时才会开启压缩,否则只有默认的text(即html等)才会开启压缩
      • threshold:这里巨坑,要把官网案例中的2048(KB)改小成512(KB),不然几百KB的文件无法达到此标准,就不会开启压缩
    • 官网建议加上br: false
      • 因为只有node v11.7 以上才支持
      • 但这里node版本16+,可以不设置此项
    • gzip有时候浏览器会无效,原因是自己开了黑夜模式的darkreader插件,把插件关闭就能看到了
  • 注意!!!

    • 这个中间件,必须要在 conditional和etag之后koa-static之前插入,否则无效