Node.js服务器如何处理请求?

Leo Jiang

假设我有以下代码。我正在使用ExpressJS,但我认为服务器部分与普通Node.js没有太大区别。

var express=require('express');

var settings=JSON.parse(fs.readFileSync('settings.json','utf8')); // does this run only once (when the server starts)?

app.get('*',function(req,res){
  res.write(fs.readFileSync('index.html')); // does this block other requests?

  setTimeout(function(){
     someSlowSyncTask(); // does this block other requests?
  },1000);

  res.end();
});

在上面的示例中,第readFileSync一次启动是在服务器启动时运行一次,还是在服务器每次接收到请求时运行?

第二readFileSync,是否阻止Node处理其他请求?换句话说,是否所有其他请求都必须等到readFileSyncNode处理完这些请求之后才能完成?

编辑:我添加了setTimeoutsomeSlowSyncTask他们会阻止其他请求吗?

布里亚马克

您应避免在服务器上使用同步方法。它们为单用户实用程序脚本提供了便利。

第一个仅运行一次,因为它是一种同步方法。* get路由直到返回后才设置。

当任何HTTP请求到达服务器时,第二个将运行。是的,它将在该同步调用期间阻止整个服务器(打开和读取文件内容的I / O成本)。不要那样做

互联网上有很多关于理解节点事件循环的文章。例如,在这里这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章