1、背景

KeepAlive是就是通常所称的长连接。KeepAlive带来的好处是可以减少tcp连接的开销,这对于短response body的请求效果更加明显。同时,可以为采用HTTP协议的交互式应用提供良好的session支持。

2、KeepAlive的原理

在HTTP1.0和HTTP1.1协议中都有对KeepAlive的支持。其中HTTP1.0需要在request中增加"Connection: keep-alive" header才能够支持,而HTTP1.1默认支持

2.1 HTTP1.0 KeepAlive支持的数据交互流程如下:

a)Client发出request,其中该request的HTTP版本号为1.0。同时在request中包含一个header:"Connection: keep-alive"。

b)Web Server收到request中的HTTP协议为1.0及"Connection: keep-alive"就认为是一个长连接请求,其将在response的header中也增加"Connection: keep-alive"。同时不会关闭已建立的tcp连接。

c)Client收到Web Server的response中包含"Connection: keep-alive",就认为是一个长连接,不close tcp连接。并用该tcp连接再发送request。(跳转到a))

2.2 HTTP1.1 KeepAlive支持的数据交互流程如下:

a)Client发出request,其中该request的HTTP版本号为1.1。

b)Web Server收到request中的HTTP协议为1.1就认为是一个长连接请求,其将在response的header中也增加"Connection: keep-alive"。同时不会关闭已建立的tcp连接。

c)Client收到Web Server的response中包含"Connection: keep-alive",就认为是一个长连接,不close tcp连接。并用该tcp连接再发送request。(跳转到a))

http keepalive原理相关推荐

  1. 【keep-alive原理】

    keep-alive原理 它提供了include与exclude两个属性,允许组件有条件地进行缓存. 作用: 在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体 ...

  2. keep-alive原理

    文章目录 什么是keep-alive? 用法 activated和deactivated两个钩子函数 实现原理 什么是keep-alive? keep-alive是vue中的一个内置组件,能够把不活动 ...

  3. Vue中keep-alive原理

    定义 keep-alive是Vue中内置的一个抽象组件.它自身不会渲染一个 DOM 元素,也不会出现在父组件链中.当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们. keep-alive是用 ...

  4. keepalive 原理讲解

    keepalive 我们说到keepalive的时候,需要先明确一点,这个keepalive说的是tcp的还是http的. tcp的keepalive是侧重在保持客户端和服务端的连接,一方会不定期发送 ...

  5. TCP keepalive的详解(解惑)

    TCP是面向连接的,一般情况,两端的应用程序可以通过发送和接收数据得知对端的存活. 当两端的应用程序都没有数据发送和接收时,如何判断连接是否正常呢? 这就是SO_KEEPALIVE的作用. 1. SO ...

  6. Tcp keepalive详解

    转载:https://www.cnblogs.com/lanyangsh/p/10926806.html TCP是面向连接的,一般情况,两端的应用程序可以通过发送和接收数据得知对端的存活. 当两端的应 ...

  7. keep-alive包裹的el-tabs中有两个页面使用echart渲染空白问题

    问题: keep-alive包裹的el-tabs中有两个页面使用了echart,在resize后切换,echart会出现空白现象,需要再resize才会出现: 解决方法: 在keep-alive包裹的 ...

  8. linux so keepalive,Linux SO_KEEPALIVE

    对于面向连接的TCP socket,在实际应用中通常都要检测对端是否处于连接中,连接端口分两种情况: 1.连接正常关闭,调用close() shutdown()连接优雅关闭,send与recv立马返回 ...

  9. 关于Keep-alive的认识和具体用法

    一.keep-alive是什么 keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是 ...

  10. linux socket SO_KEEPALIVE选项

    连接关闭的两种情况 对于面向连接的TCP socket,在实际应用中通常都要检测对端是否处于连接中,连接端口分两种情况: 1.连接正常关闭,调用close() shutdown()连接优雅关闭,sen ...

最新文章

  1. 从底部上滑失灵_雷达液位计测量液位失灵的检查处理方法
  2. 青龙羊毛——美团联想商城喜爱帮(搬运)
  3. Django1.7开发博客
  4. 用matlab绘制抛物线y的x平方,我刚刚学习MATLAB,想画一下(x^2+y^2-1)^3=x^2*y^3这个曲线的图像,该怎么画呢,谢谢大家了。...
  5. 通过 Lotus Domino Java 代理消费 Web 服务
  6. 【POJ - 2236】Wireless Network (并查集)
  7. android 字体空格,android – 在textview中设置字母之间的空格
  8. 阿里巴巴开源项目汇总-(JAVA)
  9. libudev-dev : Depends: libudev0 (= 175-0ubuntu9) but 175-0ubuntu9.3 is to be installed 错误解决方案...
  10. Java 反射常用方法
  11. 机器学习笔记(十):梯度下降 | 凌云时刻
  12. Notepad++的SQL格式化插件
  13. Java内存模型与Jvm内存模型
  14. php控制flash播放视频教程,Flash AS3教程:如何利用按钮控制选择播放动画
  15. windows10 1909 X64位 精简优化珍藏版
  16. 【Linux】nasm/yasm not found
  17. lpx寒假作业案例1
  18. 英文面试常见问题及回答汇总
  19. 关于汽油动力汽车和混合动力汽车的环保问题。
  20. DAY7:尚学堂高琪JAVA(66~69)

热门文章

  1. 人脸识别(三) 摄像头中的人脸识别+LFW数据集测试
  2. Xcode 9: An error occurred uploading to the iTunes Store. iTunes Store Operation Failed
  3. pdf分页分片预览,pdf截取,pdf转图片
  4. rp文件,怎么用浏览器预览
  5. html修改每页显示数量,JS实现动态设置每页显示固定行数
  6. 变压器综合试验台的功能到底有多强大?
  7. 电信机顶盒怎么连接鸿蒙系统电视,移动电信机顶盒怎么投屏?怎么连接手机
  8. 【专利提交】个人通过CPC客户端网上提交专利文稿的完整流程
  9. hadoop配置历史服务器
  10. ubuntu12.04安装配置opensips,搭建voip服务器