我正在学习有关JS性能和Web渲染的知识。 This post非常有用。
如果您点击某些链接,将进入here并阅读:
Node.js中的用户代码在单个线程中运行,因此对于计算操作(与I / O相对),您可以同时执行它们,但不能并行执行。
因此,我已经阅读了有关nodeJS中的并发和并行性的知识。我了解到的是nodeJS是:
libuv
处理这说明了renderToString
的运行速度很慢,因为它受CPU限制。但是似乎有一种方法可以在nodejs:clustering中启用与CPU绑定的任务的并行性。
这就是为什么我在这里。您知道为什么renderToString
没有聚类(不知道这是不是有效的英语)?
我想了解原因。因为经过这些阅读之后,我倾向于认为nodeJS在处理I / O方面非常出色,但是由于可以创建集群,因此它似乎对CPU绑定任务也很有效。不过,这似乎并不简单,在某些特定情况下可以考虑。
因此,这引出了一个额外的问题:Node.js集群的局限性/缺点是什么? (除了在大型项目上设置和维护似乎很复杂之外?)
答案 0 :(得分:-1)
将抽象置于此级别没有意义。
将renderToString()
作为集群运行并不难。例如,您可以轻松使用worker-farm库。
问题在于,这很难以一种有益的方式使用,因为为每个传入请求构建的数据的“存储”必须在renderToString()
所作用的整个组件树的范围内。
也许通过实验性worker threads node.js库,我们可能会获得一些多线程renderToString。但是,React的SSR(服务器端渲染)工作并不像客户端那么活跃。