http长链接

摘要:
前面已经说过,http请求是通过TCP连接发送的。TCP连接可以分为长连接和短连接。什么是长连接?发送http请求时,应首先创建一个tcp连接,然后通过tcp连接发送http请求。请求完成后,客户端将与服务器讨论是否关闭连接。有时,创建和关闭连接的过程比维护长链接消耗更多的资源。如何确定请求是否为长链接?Req和res将返回一个连接:保持-
之前说过http的请求是再tcp连接上面进行发送的,那么tcp连接就分为长连接 和 短连接这样的概念,那么什么是长链接呢?http请求发送的时候要先去创建一个tcp的连接,然后在tcp的连接上面发送http请求,请求完以后,客户端会跟服务端商量要不要关闭这个连接,有时候这个创建关闭的过程比保持长链接还要消耗资源
怎么判断这个请求是否是长链接呢,req,res里面会返回一个Connection:Keep-Alive,这个就是保持长链接,不关闭
//server.js
const http = require('http');
const fs = require('fs');

http.createServer(function(req,res){
  console.log('req come', req.url);
  const html = fs.readFileSync('test.html', 'utf8');
  const img = fs.readFileSync('test.jpg');
  if (req.url === '/'){
    res.writeHead(200, {
      'Content-Type': 'text/html'
    })
    res.end(html);
  } else {
    res.writeHead(200, {
      'Content-Type': 'image/jpg'
    })
    res.end(img);
  }
}).listen(8888);

console.log('server listening on 8888');
console.log('http://localhost:8888/');
<!--test.html-->
<body>
  <img src="/test1.jpg" alt="">
  <img src="/test2.jpg" alt="">
  <img src="/test3.jpg" alt="">
  <img src="/test4.jpg" alt="">
  <img src="/test5.jpg" alt="">
  <img src="/test6.jpg" alt="">
  <img src="/test7.jpg" alt="">
</body>
http长链接第1张
如图,返回了8张图片,虽然图片是同一张图片,但是我们的url是不一样的,所以浏览器在发起请求之前就知道这张图片是否一样,他只是根据url来定义不同的资源,所以同样的图片,但浏览器认为是不一样的图片再看

 http长链接第2张

每一个connection-id都是一个请求,浏览器是有并发限制的,一次最多只能6个,现在我们看res,req的Connection改成close会怎么样,Connection只有两种,一个是keep-alive,一个是close,close代表一个tcp请求之后,这个链接就会关闭掉

http长链接第3张

可以看到每个id都是不一样的,http2的同一个域名允许整站并发,比如google已经采用http2的了,会看到整站都是一个connect-id(相对于同一个域名)

免责声明:文章转载自《http长链接》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]SAP FI/CO 模块设置微信小程序:wx.request之post请求后端无法获取数据的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用photoshop以及markman进行快速重构页面的几个步骤

先来几个photoshop打开psd图的标准动作。 ctrl+,ctrl-,放大,缩小psd图的。查看字体大小看T等等。 想psd图出现刻度 你只需要"> 设置度量单位为像素之后,打开我们的标尺 准备切图的时候,使用参考线,便于切图。 切图无外乎切jpg图片和png图片。 第一种:切jpg图片方法。第二种切png图片方法记得是用移动工具 确保...

rename

Rename 1.命令用法: rename from file1 to file2 file   rename 原文件格式 新文件格式 重命名的文件 2.命令格式: rename foo foo0 foo? rename .htm .html *.htm 3.使用实例: 实例1: 命令: rename foo foo0 foo? 输出: [root@C_m...

读取JPG图片的Exif属性(一)

https://blog.csdn.net/fioletfly/article/details/53605959 https://blog.csdn.net/a_big_pig/article/details/52825347 从JPG文件的EXIF信息估计焦距...

C#将jpg格式图片合成到bmp格式图片中

         在C#中,有时为解决几个图片显示的问题,比如有一张背景图,还有一直是要显示在背景图上的图片,如何能将这2张图片合成一张图片显示呢? 下面的例子提供了这样一个解决的方法,代码如下: //strwinepath酒的图片 //strBackPic 背景图片 private void TestPaint(string strwinepath,st...

记录yii2-imagine几个常用方法

记录yii2-imagine几个常用方法:      //压缩 Image::thumbnail('@webroot/img/test-image.jpg', 120, 120)->save(Yii::getAlias('@webroot/img/thumb-test-image.jpg'), ['quality' => 100...

GIF/PNG/JPG和WEBP/base64/apng图片优点和缺点整理

  GIF/PNG/JPG/WEBP/APNG都是属于位图(位图 ,务必区别于矢量图);   GIF/PNG和JPG这三种格式的图片被广泛应用在现今的互联网中,gif曾在过去互联网初期慢速的情况下几乎是做到了大一统的地位,而现如今随着互联网技术应用和硬件条件的提高,png和jpg格式的图片越来越多的被应用,gif昔日的辉煌一去不复, webp图片格式现在还...