返回信息流```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();
}
```
这是一条镜像帖。来源:北邮人论坛 / www-technology / #39112同步于 2016/11/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[问题]浏览器重复请求还是console被执行了多次
matsunatsuri
2016/11/10镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
我很想帮楼主看看是啥问题,但是楼主给得信息并不足以复现这个问题.
https://zhuanlan.zhihu.com/p/20752519
在给出可复现例子的过程中你可能自己就把这个问题解决了.
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
浏览器访问至少有一个请求是favicon
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
我尝试下提供个demo,正在删除worker.js和master.js里面没用的片段
话说一开始觉得这是个挺没营养的问题的。。可能别人一眼就能看出来的那种新手问题。。
【 在 e97ace 的大作中提到: 】
: 我很想帮楼主看看是啥问题,但是楼主给得信息并不足以复现这个问题.
: https://zhuanlan.zhihu.com/p/20752519
: 在给出可复现例子的过程中你可能自己就把这个问题解决了.
: ...................
这个考虑到了 但是一共打印了8次pid。。。
ideone暂时没找到怎么模拟这种sendfile
我暂时先把工程文件夹打包放到网盘了 http://pan.baidu.com/s/1skE9POL
应该能帮助复现
麻烦大大看下
【 在 e97ace 的大作中提到: 】
: 浏览器访问至少有一个请求是favicon
: ————
: 微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
: ...................
【 在 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. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送
好的 我先看下请求那个。。。不是很明白
【 在 e97ace 的大作中提到: 】
:
: 非大大...楼主发的很多东西我是不懂的...
: 那8个请求都是正常的应该有的请求.
: ...................
十分感谢
【 在 e97ace 的大作中提到: 】
:
: 非大大...楼主发的很多东西我是不懂的...
: 那8个请求都是正常的应该有的请求.
: ...................
我看了下F12 应该是算上文件一共请求了9次
所以一共被响应了9次
curl请求这个地址貌似并不会加载文件
感谢解答~
【 在 e97ace 的大作中提到: 】
:
: 非大大...楼主发的很多东西我是不懂的...
: 那8个请求都是正常的应该有的请求.
: ...................
【 在 matsunatsuri 的大作中提到: 】
: 我看了下F12 应该是算上文件一共请求了9次
: 所以一共被响应了9次
: curl请求这个地址貌似并不会加载文件
: ...................
不客气. 楼主得注意加强一下基础啊...关于浏览器工作原理的
————
微博 @flowmemo , 现在主要写JavaScript. 关注广泛, 欢迎交流.
此签名通过「北邮人签名档」脚本发送