我想就移動處理的實際影響提出一些意見,這些處理傳統上將在服務器上完成,而不是由客戶端在node.js Web應用程序中處理。將node.js服務器javascript處理移動到客戶端
案例研究案例: 用戶上傳一份包含多年銀行對帳單條目的CSV文件。我們希望解析文件,對每個條目進行分類並計算每個類別的累計值,以便我們可以將新分類的語句存儲在數據庫中,並向用戶顯示支出分析。
條目按照說明中的匹配字符串進行分類。有許多類別和許多條目,並且需要相當長的時間來處理。
在我們的node.js服務器中,我們可以愉快地釋放事件循環,同時等待網絡響應等,但是如果有任何數據處理或類似處理,服務器將被阻止響應請求,並且這似乎是不可避免的。
傳統上,CSV文件將傳遞給服務器,服務器將處理,保存在數據庫中,併發回處理輸出。
在我們的單線程node.js服務器中,這個處理由瀏覽器處理,輸出顯示併發送到服務器進行存儲似乎是有意義的。當然,客戶端必須等待完成,但他們的處理不會阻止服務器響應來自其他客戶端的請求。
我很想看看有沒有人有過使用此模型構建應用程序的經驗。
所以,問題是..是否有任何問題獲取瀏覽器,而不是服務器來處理,只要有可能,將阻止事件循環的任何處理?這對於node.js應用程序開發來說是一個很好/合理/可行的方法嗎?
一年的銀行對賬單信息實際上不應超過幾毫秒來處理客戶端或服務器。 – Pointy 2012-02-04 15:05:22
你總是可以使用['process.nextTick()'](http://nodejs.org/docs/latest/api/process.html#process.nextTick)分解服務器端處理,以便它保持響應其他在處理時請求 - 處理幾行內容,然後將剩下的工作委託給下一個打勾。 – 2012-02-04 15:10:14
如果有很多類別,每個類別都有數百個可能的匹配,並且每個條目都必須針對每個條目進行測試,但可能需要一段時間。無論如何,不是重點......不好的例子,問題更多的是圍繞着給客戶處理繁重的處理操作的一般方法。 @JoeWhite感謝您的建議..將看看nextTick() – hacklikecrack 2012-02-04 17:05:32