是否需要处理node.js域名? 什么时候该做?

我有一个快速应用程序,我使用收到每个请求的域名。 我已经添加了一个中间件,以确保任何进一步的中间件在域内“执行”。

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来获取对初始请求的引用,它是头文件,cookies等等。我这样做是因为“我不能直接传递req给这个代码。 这个奇怪的代码是一种跨环境的代码(对于浏览器和节点),它不知道它在哪里执行。 在底层,对于Node和浏览器,特别是networking代码,一些基本层的实现是不同的。 对于浏览器来说,它是一个XMLHttpRequest,而NodeJS则是一个基于request库的自定义包装器。

我担心内存泄漏。 该引用存储在域上的req 。 他们可以保留这些东西,让他们不垃圾收集?

另外,我是否需要定期处理域名,还是需要在某些边缘/错误情况下处理这些域名?

通常情况下,您会将您的域放置在错误或完成事件上,这里是一个示例https://gist.github.com/regality/3061748

不过,从我的理解,domain.dispose()方法已被弃用。 有关详细信息,请参阅此git问题 – https://github.com/joyent/node/issues/5018

进一步根据文档 ,build议您在遇到错误时终止域进程。 那个链接有一个很好的解释和例子。