我不确定我是否正确理解http-keep-alive,在我看来,它应该重用tcp连接,而不是构建一个新的连接。然而,我发现了一些非常奇怪的事情,似乎很难预料http keep-alive的行为。
服务器:NodeJS&Express^4.16.3,我使用Wireshark分析结果
情况1:
for(let i =1; i<11; i++){
app.use('/' + i, (req, res) => {
res.header('cache-control', 'no-store');
res.send('i');
});
}
server.keepAliveTimeout = 50000;
setTimeout(() => {
for (let i = 1; i < 11; i++) {
fetch('' + i).then(data => console.log(data));
}
}, 10000);
情况2:
for(let i =1; i<11; i++){
app.use('/' + i, (req, res) => {
res.header('cache-control', 'no-store');
// here I have added timeout!
setTimeout(() => {
res.send('i');
}, 2000);
});
}
所以我的问题是,http保持活力到底意味着什么?为什么它会这样?如果在情况2中它不会使用相同的tcp连接,那么保持活动的含义是什么??
感谢你的任何想法!
是的,HTTP Keep Alive应该重用与服务器的TCP连接。服务器将connection:keep-alive
标头附加到响应中,这样客户机就可以保持连接活动。因此,在服务器响应之前,客户机不会保持连接活动。
因此,在第一个场景中,服务器在收到请求后立即使用报头进行答复。因此,第二个响应(实际上可能重用,您很幸运,因为服务器在发送第二个请求之前响应了您的请求)重用了TCP连接。
但是在第二个场景中,服务器等待2秒发送响应,所以客户端直到接下来的2秒才知道它应该是一个保持活动连接。但是所有其他请求都需要在此之前发送,因此默认情况下,它将为每个HTTP请求创建一个新连接。
如果您有任何疑问,请在客户端尝试此操作,
setTimeout(() => {
fetch('' + i).then(data => console.log(data));
setTimeout(function () {
for (let i = 2; i < 11; i++) {
fetch('' + i).then(data => console.log(data));
}
}, 5000)
}, 10000);
我有一个类,它具有应该被注入的字段。 并且有接口仅由类实现,具有的。 当我尝试启动SpringBootApplication时,会抛出。 为什么接口注册为bean的一个,即使它没有注释,也没有包含任何bean配置? 我发现,如果我不使用作为,一切都很好。 有什么想法吗?
我已经实现了一个成熟的节点http服务器,该服务器具有数据库驱动的sesssion管理,并且能够在上面使用Socket.io来实现文件上传进度条和一个聊天应用程序。我还使用了node-http-proxy,并且能够代理WebSockets。在这种背景下,我有以下问题,我认为我需要知道这些问题才能成为一名有效的Socket.io开发人员。我没有被困在任何特定的代码中,但下面所要求的信息是作为一个有效
我使用django-Summernote到我的文本字段。这应该使我的文本字段看起来有点像下面的图片 现在,上面的静态文件存储在我的AWS S3存储桶中。我在浏览器控制台中遇到一个,下面是我的文本字段现在的样子 跨源请求被阻止:同源策略不允许读取远程资源https://some_bucket_66d.s3.amazonaws.com/static/summernote/font/summernote
问题内容: 在我用Swift编写的SpriteKit iOS游戏中,播放非常短的声音(约0.5秒)会产生打ic(如滞后)。在其他问题中,我读到我应该发出声音,就像以前那样。 我什至使用变量()在播放之前检查声音是否准备就绪。每当播放完()时,我也会重新准备声音。以下是代码的相关部分: 我不知道我在哪里犯了错误。我感觉我已经尝试了所有方法(包括但不限于:仅准备一次,在播放后立即准备,不使用变量,而只
然而我这样做,似乎并不奏效: 您知道如何使DefaultHttpClient使用TCP保持活动策略吗?
问题内容: 关键字在Google Go中是什么意思? 问题答案: 2017更新 :解析器进行了重大更新,新的解析器似乎不再支持这些复活节彩蛋字眼。 对我来说,看起来像是一个复活节彩蛋: https://github.com/golang/go/blob/08e25fc1ba397e02ec776561ed73b7f9a8b94392/src/cmd/compile/internal/gc/lex.