运行 并行Expresse中间件

Running Expresse middleware in parallel

当某个中间件接受参数时,我如何运行我的中间件并行?我正在阅读 this article,其中他们有如下调用:

app.use(getUser);

但我接到了如下电话:

app.use(require('./middleware/settings')(config));

此外,什么时候使用这种方法最好,因为我的 app.js 中有许多中间件正在初始化和触发,例如:

app.use(require("connect-assets")({
  paths:    [config.app.assets_dir + '/css',
             config.app.assets_dir + '/js',
             config.app.assets_dir + '/images',
             config.app.assets_dir + '/fonts',
             config.app.assets_dir + '/bower_components'
            ],
  buildDir: config.app.min_dir,
  gzip:     true
}));

我应该将它用于部分还是全部?

您链接到的文章中的技术并不真正直接适用于您的情况。他们正在谈论需要 I/O 的多个独立位的单个请求,并从串行进程重构为并行进程。对于资产管道,情况有所不同,该技术不能直接应用。加上第三方模块,您无法控制在构建资产时正在执行的任何 IO 连接资产,但这一切只会发生一次。只要考虑使用他们的 precompile 选项就可以了。

对于资产管理器、静态服务器等常见的第三方中间件,事情已经 "parallel" 因为快速服务器可以一次响应许多请求。当您的自定义业务逻辑具有不需要串行执行的 IO 任务时,async.parallel 技术更适合。