BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #39112同步于 2016/11/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

[问题]浏览器重复请求还是console被执行了多次

matsunatsuri
2016/11/10镜像同步10 回复
```javascript var server = http.createServer(function(req, res){ var filePath = false; if(req.url == '/'){ filePath = 'public/index.html'; } else { filePath = 'public' + req.url; } var absPath = './' + filePath; serveStatic(res, cache, absPath); console.log('handled by worker,pid is:'+process.pid+'\n'); }); ``` 准备用node写了个服务器,默认开启了4进程,使用chrome浏览器访问该端口时,发现被不同进程重复响应 如图 但是使用curl命令访问该地址时,node服务器却只响应了一次。 之后又改写了一下响应函数,方便测试,如下 ```javascript var server = http.createServer(function(req, res){ res.end('ok'); console.log('handled by worker,pid is:'+process.pid+'\n'); }); ``` 浏览器测试下来变为只响应一次 很奇怪。。 开始以为是不熟悉异步,所以console被执行了多次,但是发现响应的pid也不同,感觉是浏览器发送了多次请求。 不太理解这个问题 希望大家解答下。 PS 多进程是通过发送句柄实现的 ```javascript //master.js var server = require('net').createServer(); server.listen(port); var createWorker = function(){ var worker = fork(__dirname + '/worker.js'); worker.send('server',server); } for(var i = 0; i < cpus.length; i++){ createWorker(); } ```
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
e97ace机器人#1 · 2016/11/10
我很想帮楼主看看是啥问题,但是楼主给得信息并不足以复现这个问题. https://zhuanlan.zhihu.com/p/20752519 在给出可复现例子的过程中你可能自己就把这个问题解决了. ———— 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流. 此签名通过「北邮人签名档」脚本发送
e97ace机器人#2 · 2016/11/10
浏览器访问至少有一个请求是favicon ———— 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流. 此签名通过「北邮人签名档」脚本发送
matsunatsuri机器人#3 · 2016/11/10
我尝试下提供个demo,正在删除worker.js和master.js里面没用的片段 话说一开始觉得这是个挺没营养的问题的。。可能别人一眼就能看出来的那种新手问题。。 【 在 e97ace 的大作中提到: 】 : 我很想帮楼主看看是啥问题,但是楼主给得信息并不足以复现这个问题. : https://zhuanlan.zhihu.com/p/20752519 : 在给出可复现例子的过程中你可能自己就把这个问题解决了. : ...................
matsunatsuri机器人#4 · 2016/11/10
这个考虑到了 但是一共打印了8次pid。。。 ideone暂时没找到怎么模拟这种sendfile 我暂时先把工程文件夹打包放到网盘了 http://pan.baidu.com/s/1skE9POL 应该能帮助复现 麻烦大大看下 【 在 e97ace 的大作中提到: 】 : 浏览器访问至少有一个请求是favicon : ———— : 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流. : ...................
e97ace机器人#5 · 2016/11/10
【 在 matsunatsuri 的大作中提到: 】 : 这个考虑到了 但是一共打印了8次pid。。。 : ideone暂时没找到怎么模拟这种sendfile : 我暂时先把工程文件夹打包放到网盘了 http://pan.baidu.com/s/1skE9POL : ................... 非大大...楼主发的很多东西我是不懂的... 那8个请求都是正常的应该有的请求. 你在worker.js中server的函数定义中加一句console.log(req.url)你就知道请求的是啥了. 顺便在chrome打开开发者工具的网络面板也可以看到请求. 我发的如何提问的链接并不是完全适合js/前端的. 网页的可以用jsfiddle, codepen. node的也不用把node_modules打包, 说清楚环境告诉别人怎么装就行. ———— 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流. 此签名通过「北邮人签名档」脚本发送
matsunatsuri机器人#6 · 2016/11/10
好的 我先看下请求那个。。。不是很明白 【 在 e97ace 的大作中提到: 】 : : 非大大...楼主发的很多东西我是不懂的... : 那8个请求都是正常的应该有的请求. : ...................
matsunatsuri机器人#7 · 2016/11/10
十分感谢 【 在 e97ace 的大作中提到: 】 : : 非大大...楼主发的很多东西我是不懂的... : 那8个请求都是正常的应该有的请求. : ...................
matsunatsuri机器人#8 · 2016/11/10
我看了下F12 应该是算上文件一共请求了9次 所以一共被响应了9次 curl请求这个地址貌似并不会加载文件 感谢解答~ 【 在 e97ace 的大作中提到: 】 : : 非大大...楼主发的很多东西我是不懂的... : 那8个请求都是正常的应该有的请求. : ...................
e97ace机器人#9 · 2016/11/10
【 在 matsunatsuri 的大作中提到: 】 : 我看了下F12 应该是算上文件一共请求了9次 : 所以一共被响应了9次 : curl请求这个地址貌似并不会加载文件 : ................... 不客气. 楼主得注意加强一下基础啊...关于浏览器工作原理的 ———— 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流. 此签名通过「北邮人签名档」脚本发送