【问题标题】:Do node.js domains need to be disposed? When should it be done?是否需要处置 node.js 域?什么时候应该做?
【发布时间】:2014-01-20 23:12:21
【问题描述】:

我有一个 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 等...我这样做是因为'我无法通过 @987654323 @ 直接到此代码。这个奇怪的代码是一种不知道在哪里执行的跨环境代码(对于浏览器和节点)。在底层,一些基础层对 Node 和浏览器的实现方式不同,尤其是网络代码。对于浏览器,它是一个 XMLHttpRequest,对于 NodeJS,它是一个基于 request lib 的自定义包装器。

我担心内存泄漏。对存储在域中的req 的引用。他们可以保留这些东西并让它们不被垃圾收集吗?

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

【问题讨论】:

    标签: javascript node.js express node.js-domains


    【解决方案1】:

    通常您会在错误或完成事件中处理您的域,这里是一个示例https://gist.github.com/regality/3061748

    但是,据我了解, domain.dispose() 方法已被弃用。有关详细信息,请参阅此 git 问题 - https://github.com/joyent/node/issues/5018

    进一步根据doc,建议您在遇到错误时终止域进程。该链接有很好的解释和示例。

    【讨论】:

      猜你喜欢
      • 2012-06-28
      • 1970-01-01
      • 2012-09-16
      • 2021-07-25
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      相关资源
      最近更新 更多