Node.js express、路由器和压缩

Sil*_*ley 2 http-compression node.js express

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

const express = require("express");
const compression = require("compression");
const app = express();
app.use(compression());
Run Code Online (Sandbox Code Playgroud)

如果我添加一个路由器来管理 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"));
Run Code Online (Sandbox Code Playgroud)

谢谢澄清!

max*_*paj 5

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

  • 您加载到应用程序中的任何中间件都将应用于所有路由。这些是应用程序级中间件

    app.use(middleware)

  • 您用于特定路由的任何中间件都不会应用于任何其他路由。这些是路由器级中间件

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