簡體   English   中英

Node.js對象實例化是否為每個用戶創建一個對象?

[英]Do Node.js object instantiaton create one object per user?

因此,我正在本教程上學習如何在Node.js中制作RESTful API,其中一部分突然讓我有些擔心。 在應用程序中,將實例化一個對象以處理稱為TaskRepository()的RESTful請求。

根據與本教程相關的Gist ,您將看到以下代碼片段:

var taskRepository = new TaskRepository();

我的問題是,這將為每個用戶實例化一個TaskRepository()對象嗎? 在這種情況下,如果流量足夠大,您是否沒有機會很快耗盡內存?

什么是最佳做法?

此外,如果是這種情況,您將如何以編程方式解決它,以避免將來出現交通擁堵?

在該特定的API中,有一個API用於創建任務,並返回任務ID。 該任務將一直存在,直到將來的某些API調用引用該特定ID並使用Delete操作為止。

TaskRepository是按服務器(為服務器創建一次)的,而不是按用戶的。

這些任務不是針對每個用戶的,但是當您創建任務並將其返回給請求者時,只有該請求者才可能知道ID並使用它,盡管由於此示例未創建隨機ID,所以它們是可預測的這樣任何人都可以引用特定的ID。

如果您在創建任務后不刪除它們,它們將隨着時間的推移而累積。 通常,類似這樣的操作會導致某種程度的不活動超時,並且如果在一段時間(例如30分鍾)內不使用任務,則會自動將其刪除。

對於您鏈接的要點,答案是否定的。 設置服務器后,將一次調用new TaskRepository() (在創建var app = express旁邊),然后該實例將被共享並用於所有請求。

現在,如果您在路由內( app.get('stuff/etc', function () {})) )調用了new TaskRepository() app.get('stuff/etc', function () {}))那么您將是正確的。 它將為每個HTTP請求創建一個TaskRepository的新實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM