所以我正在this tutorial上学习如何在Node.js中创建一个RESTful API,其中一部分突然让我有点担心。在app中,实例化一个对象来处理名为TaskRepository()
的RESTful请求。
根据与本教程相关的Gist,您会看到以下代码段:
var taskRepository = new TaskRepository();
我的问题是,这会为每个用户实例化一个TaskRepository()对象吗?在这种情况下,如果有足够高的流量,您是否有可能在内存中快速运行?
这里有什么最佳做法?
此外,如果是这种情况,您将如何以编程方式绕过它以避免未来的交通堵塞?
答案 0 :(得分:2)
在该特定API中,有一个用于创建任务的API,它返回一个任务ID。该任务将存在,直到将来某个API调用引用该特定ID并使用删除操作。
每个服务器TaskRepository
(为您的服务器创建一次),而不是每个用户。
这些任务并非特别针对每个用户,但是当您创建任务并将其返回给请求者时,只有该请求者可能知道该ID并使用它,尽管由于此示例不创建随机ID,它们是可预测的,所以任何人都可以引用特定的ID。
如果您在创建任务后没有删除任务,它们将随着时间的推移而累积。通常,这样的事情会产生某种不活动超时,并且如果在一段时间内(例如30分钟)没有使用它们,它会自动删除任务。
答案 1 :(得分:2)
在你联系的Gist的情况下,答案是否定的。设置服务器时会调用new TaskRepository()
一次(紧接着创建var app = express
,然后将共享一个实例并用于所有请求。
现在,如果您在路线(new TaskRepository()
)内拨打了app.get('stuff/etc', function () {}))
,那么您就是正确的。它将为每个HTTP请求创建一个新的TaskRepository实例。