做Node.js对象实例化,为每个用户创建一个对象
Do Node.js object instantiaton create one object per user?
所以我正在学习这个教程,学习如何在Node.js中制作一个RESTful API,其中的一部分突然让我有点担心。在应用程序中,一个对象被实例化来处理称为TaskRepository()
的RESTful请求。
var taskRepository = new TaskRepository();
我的问题是,这会为每个用户实例化一个TaskRepository()对象吗?在这种情况下,如果有足够高的流量,是否有可能很快耗尽内存?
这里的最佳实践是什么?
另外,如果是这种情况,您将如何通过编程绕过它以避免未来的交通堵塞?
在这个特定的API中,有一个创建任务的API,它返回一个任务ID。该任务将一直存在,直到将来某个API调用引用该特定ID并使用删除操作。
TaskRepository
是每个服务器(为您的服务器创建一次),而不是每个用户。
这些任务不是针对每个用户的,但是当您创建任务并将其返回给请求者时,只有请求者可能知道ID并使用它,尽管由于本例没有创建随机ID,因此它们是可预测的,因此任何人都可以引用特定的ID。
如果在任务创建后不删除,任务将随着时间的推移而累积。通常,像这样的东西会创建某种非活动超时,如果任务在一段时间内(例如30分钟)不使用,则会自动删除任务。
对于您链接的Gist,答案是否定的。new TaskRepository()
在服务器设置时被调用一次(就在创建var app = express
的旁边),然后一个实例将被共享并用于所有请求。
现在,如果你在路由(app.get('stuff/etc', function () {}))
)中调用new TaskRepository()
,那么你是正确的。它将为每个HTTP请求创建一个新的TaskRepository实例。
- 如何在节点中为用户创建某种警报
- 如何为在客户端检查其密码的用户创建登录页面
- 如何防止用户创建重复ID
- 如何在完整日历中筛选出用户创建的事件
- 使用java和html基于当前用户创建重定向链接
- 在jquery或jquery移动中,如何将用户创建的链接传递到用户创建的按钮?我所说的用户是指最终用户,而不是我
- 用户创建的应用程序的安全性
- 为多个用户创建自动低分辨率和高分辨率pdf,png与inDesign
- 如何为用户创建唯一的网址
- 如何在我的网页上为iPhone用户创建一个注释,说明有一个应用程序
- 当用户创建新帖子时,张贴到墙上时出错
- 为不同的用户创建一个常规页面
- 如何为不同的用户创建Opencart模块
- Express js会话——仅为登录用户创建
- 根据用户创建文本字段's在JavaScript函数中的输入
- 从用户创建的选择字段中获取所有选定项目的值
- 在数据库中保存用户创建的javascript是否安全
- 如何为用户创建带有构建选项的流星JS包
- 如何在Meteor中验证服务器上的用户创建
- 如何获取用户文本输入用户创建输入的值,jQuery