【问题标题】:Node.js express, routers and compressionNode.js express、路由器和压缩
【发布时间】:2017-12-21 09:04:16
【问题描述】:

在基于 express 的 Node.js 应用程序中,我以这种方式加载压缩中间件:

const express = require("express");
const compression = require("compression");
const app = express();
app.use(compression());

如果我添加一个路由器来管理 API 请求,我应该在路由器中重新加载压缩还是它的响应已经被压缩?

const router = express.Router();
router.use(compression()); // Is this needed or not?

router.get(...); // and all other API methods
app.use("/api", router);

app.use("/", express.static("./pages"));

感谢您的澄清!

【问题讨论】:

    标签: node.js express http-compression


    【解决方案1】:

    不,如果您将 compression 中间件加载到您的应用中,则不必将其加载到特定路由中。

    • 您加载到应用中的任何中间件都将应用于所有路由。这些是application-level middleware

      app.use(middleware)

    • 您用于特定路由的任何中间件都不会适用于任何其他路由。这些是router-level middleware

      router.get('/route', middleware, ...)

    【讨论】:

      【解决方案2】:

      无需再次加载压缩。

      来自compression npm examples

      表达/连接

      当将此模块与 express 或 connect 一起使用时,只需 app.use 模块尽可能高。通过中间件的请求 将被压缩。

      var compression = require('compression')
      var express = require('express')
      
      var app = express()
      
      // compress all responses
      app.use(compression())
      
      // add all routes
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-14
        • 2016-05-09
        • 2015-01-30
        • 2019-09-02
        • 2015-01-03
        • 1970-01-01
        • 2017-04-29
        • 2020-05-14
        相关资源
        最近更新 更多