2015-08-08 105 views
1

因此,我正在研究this tutorial以了解如何在Node.js中创建RESTful API,其中一部分突然让我有点担心。在应用程序中,实例化对象以处理称为TaskRepository()的RESTful请求。Node.js对象实例是否为每个用户创建一个对象?

Gist相关的教程,你会看到这样的代码片段:

var taskRepository = new TaskRepository(); 

我的问题是,将这个实例化一个TaskRepository()每用户对象?在这种情况下,如果流量足够高,您是否有机会在内存中快速运行?

这里最好的做法是什么?

此外,如果是这种情况,你会如何绕过它编程,以避免未来的交通拥堵?

+0

什么是用户?你的意思是一个客户? – Bergi

+3

不,只有一个* single *'taskRepository'实例化,静态地在请求之外处理回调。 – Bergi

回答

2

在那个特定的API中,有一个API来创建一个任务并返回一个任务ID。该任务将存在,直到将来的某个API调用引用该特定的ID并使用删除操作。

TaskRepository是每个服务器(为您的服务器创建一次),而不是每个用户。

这些任务并不是特别针对每个用户,但是当您创建一个任务并将其返回给请求者时,只有该请求者可能知道该ID并使用它,但由于此示例不会创建随机ID ,它们是可预测的,所以任何人都可以引用特定的ID。

如果您在任务创建后不删除任务,则会随着时间的推移积累。通常情况下,像这样的东西会产生某种不活动的超时时间,并且如果某些时间段(如30分钟)没有使用任务,它会自动删除任务。

1

在Gist链接的情况下,答案是否定的。当服务器设置(旁边创建var app = express再一个实例将共享并用于所有请求new TaskRepository()被调用一次。

现在,如果你曾要求new TaskRepository()路线(app.get('stuff/etc', function() {})))内,那么你” d是正确的,它会根据HTTP请求创建TaskRepository的一个新实例

相关问题