0

我正在阅读The Node Beginners book并且对 node js 请求处理的“同步方式”有疑问。那么我的意思是假设我的网站有 2 个页面启动和上传(根据教程),我对 2 个页面发出并发请求,然后请求被串行处理(比如第一次启动将被获取,然后上传将被获取)。如果我的网站每秒接收 100 个请求(并且我只运行一个节点进程),所有这些请求都将被串行处理。所以对路由器没有意义吗
调用 setTimeOut 中的所有 requestHandlers(类似于 setTimeOut(handler(response), 0) )?这样,路由器的任务将仅限于调用处理程序并移动到下一个请求等待。当然,页面需要时间来加载,具体取决于其大小和操作,但至少时间用于完成重要工作,而不是仅仅等待其他页面。

我也知道节点运行一个进程。但它确实运行多个线程不是吗?

4

1 回答 1

1

为了回答你的最后一个问题,你用 JavaScript 为 Node 程序编写的所有代码都在一个线程中运行;异步 I/O 任务由libuv抽象出来。

我认为您没有以足够细化的方式考虑您的两个请求;你说,

首先将获取开始,然后将获取上传

但是,实际上,Web 请求和响应是由各种 IO 任务组成的,而不仅仅是您在 JavaScript 程序中所做的处理。例如,当数据通过套接字为“start”处理程序流式传输时,数据也可以为“upload”处理程序流式传输到程序中。

于 2012-07-06T02:05:02.290 回答