1

我们有一个 NodeJS Express 应用程序,我们已经为其实现了自定义分析后端。现在,我们正在决定如何为功能手机等禁用 JS 的浏览器实现跟踪机制。

我们正在考虑的一种设计方法是创建一个中间件,它拦截每个请求,从请求/上下文中提取参数并将它们发送到后端。这是非常可扩展的,并且对于我们这样的自定义分析解决方案非常有意义。

另一种方法是像谷歌分析那样创建一个跟踪像素,然后从中提取数据。但这似乎是自定义跟踪解决方案的可扩展性要低得多的解决方案,因为与 GA 不同,参数和数据结构可以随时更改或扩展。

我的问题是 - 制作发出异步请求的中间件是否有任何反面?在创建它时我们需要注意什么,因为对我们服务器的每个请求都将通过这个中间件?我们的是一个比较大的应用,每分钟几十万的流量。

4

1 回答 1

5

只要您保持中间件异步并next()在必要时调用该方法,就可以了。如果您为它配置了服务器实例,Express 可以处理相当多的负载。

真正的问题是当您开始执行同步方法时,您可以/应该利用 Promise 来正确处理它们的解决方案。

提示:在您的中间件/控制器逻辑中尽可能避免嵌套的承诺解决方案。使用类似 Bluebird 的.all()方法,这样您就不会在阻塞请求上浪费处理时间,如果您必须发出顺序回调,请考虑异步瀑布或异步系列(取决于您选择的 Promise 库),这将允许您按顺序运行您的 Promise如果它们依赖于先前的信息,则解决方案。有助于保持代码干净。

于 2016-09-20T21:06:12.433 回答