我想就移动处理的实际影响提出一些意见,这些处理传统上将在服务器上完成,而不是由客户端在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