var http = require(‘http’), fs = require(‘fs’);
http.createServer(function (req, res) { //fs貌似没有推送文件的这个方法。。。 //fs.sendFile(‘./index.html’); }).listen(4000);
15 回复
@alsotang 这里同步为什么比异步好呢?Why?求赐教! 我觉得GuoZhang这样:fs.createReadStream(‘your_static_file’).pipe(res);比较好啊 难道pipe是同步的?
不一样,
readFileSynce
整个文件读完后再 respone
createReadStream('file').pipe(res)
这是chunk,读多少respone多少。
弄个大文件,打开浏览器就一目了然了。
NODEJS主线程是单线程的,之所以支持高并发, 就是使用了异步+回调的方式, 如果你这里使用同步处理文件,那在并发访问的时候,那其它线程可能都会阻塞在主线程。
如果在你的NODE.js主线程中业务逻辑很复杂的时候,那整个网站都会被阻塞在主线程,之所以NODEJS,单线程异步无阻塞,那是因为系统提供了异步+回调的接口,把这些处理交给了底层系统去执行才没有被阻塞, 如果在上面你使用同步可能就会导致被阻塞
个人爱好我也在自学node.js , 这是我对上面的理解,如果理解有错请多指教, 谢谢!