gpt4 book ai didi

node.js - 为什么 node.js Express 服务器只处理每个客户端对同一路由的一个请求?

转载 作者:搜寻专家 更新时间:2023-10-31 23:23:19 24 4
gpt4 key购买 nike

像这样使用路由处理程序运行快速服务器:

  app.get('*', (req, res) => {
console.log('Received request');

setTimeout(() => {
res.end();
console.log('Ended request');
}, 3000);
});

如果访问路由 '/foo' 然后立即访问 '/bar'(在两个不同的选项卡中),这将通过 console.log 输出:

Received request
Received request
Ended request
Ended request

但是如果除了在两个选项卡中访问 '/foo' 之外,您还执行相同的操作,服务器会在处理第二个请求之前等待第一个请求:

Received request
Ended request
Received request
Ended request

我相信所有的方法请求都是异步处理的,但这似乎是一个异常(exception)。谁能深入解释为什么会发生这种情况?我无法在 express 文档中找到任何信息。

最佳答案

使用 Windows 10 Node.js v8.1.3 和 Chrome 以及 MS Edge 浏览器进行的测试显示了一些有趣的东西。使用您最初发布的代码并使用 Chrome 发出 http 请求会产生与您描述的相同的延迟第二响应行为。修改代码以包括编写对请求客户端的响应,例如:

app.get('*', (req, res) => {
console.log('Received request');
res.write("Request received\n");
setTimeout(() => {
res.write("Ending request response");
res.end();
console.log('Ended request');
}, 3000);
});

给出了预期的结果。

当使用 MS Edge 制作时,第一个和第二个 http 响应都没有被第一个代码版本延迟。基于此,Brahma Dev 关于浏览器缓存优化的评论似乎是正确的。

关于node.js - 为什么 node.js Express 服务器只处理每个客户端对同一路由的一个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48854045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com