我有一个 Express 应用程序,并且每个收到的请求都使用域。我添加了一个中间件,以确保在域“内部”执行任何进一步的中间件。
app.use(function(req, res, next) {
var d = domain.create();
d.req = req;
d.add(req);
d.add(res);
d.run(next);
});
此外,在处理请求时执行的一些代码process.domain.req
用于获取对初始请求的引用,它是标头、cookie 等......我这样做是因为'我无法req
直接传递给此代码。这个奇怪的代码是一种不知道在哪里执行的跨环境代码(对于浏览器和节点)。在底层,一些基础层对 Node 和浏览器的实现方式不同,尤其是网络代码。对于浏览器,它是一个 XMLHttpRequest,对于 NodeJS,它是一个基于request
lib 的自定义包装器。
我担心内存泄漏。对req
存储在域上的引用。他们可以保留这些东西并让它们不被垃圾收集吗?
另外,我是否需要定期处理域,还是需要在某些边缘/错误情况下处理它们?