2015-08-08 99 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的一個新實例

相關問題