nodejs的一个疑问,为什么req被执行了两次(从控制台输出可看出)
发布于 12 年前 作者 zsq8899 14937 次预览 最后一次回复是 12 年前 来自
代码: var http=require(‘http’); var i=0; var req=function(req,res){ i=i+1; console.log(i); res.writeHead(200,{‘Content-Type’:‘text/plain’}); res.end(‘Hello World\n’); };
http.createServer(req).listen(8888,“127.0.0.1”); console.log(‘Server running…’);
控制台输出: Server running… 1 2
从控制台可以看出console.log(i)被执行了两次。只是一个请求,咋会执行两次console.log(i),如果是比较耗时的操作,岂不是白白消耗性能了。求大神解答。
3 回复
每个页面默认都会再发一个
/favicon.ico##控制台输出:
通过NODEJS社区(http://webchat.freenode.net/?channels=node.js#),已解决此问题,顺便也在此说明一下
把console.log(i); 改为console.log(i+":"+req.url);即可把此问题看明白了,这时输出为: Server running… 1:/ 2:/favicon.ico
我们发现favicon也被当做是一次请求,故被执行了两次,另外有意思的地方就是把res.end(‘Hello World\n’);注释或删除,console.log(i)就不会被执行两次了。
尽管此问题已解决了,还是感谢TONNY兄