HTTP协议的Connection: keep-alive  header是为了解决性能问题而产生的。

HTTP作为一个应用层协议,其性能在很大程度上取决于TCP(传输层协议)通道的性能。而keep-alive就是HTTP对其下的TCP通道性能优化的一种策略。

影响HTTP高并发时性能的若干个因素

建立TCP连接的网络延时

下图描绘了HTTP事务主要的连接、传输以及处理时延。

注意到,在很多情况下,服务器真正“处理”事务的时间并不长。绝大部分时间都被消耗在了建立TCP连接、传输请求和响应报文上。

当客户端请求的资源在一台服务器上,请求被串联执行时,这种时延将会被进一步放大。如下图客户端向服务器请求了3个资源。

TCP慢启动

TCP数据传输的性能还取决于TCP的使用期(age),连接会随着时间进行自我“调谐”。比如一个TCP连接建立后,一个TCP端点在任意时刻可以传输的分组数是有限的。每成功接收一个分组,发送端就有了发送另外两个分组的权限。随着传输的数据越来越多,任意时刻可发送的分组数就会大大增加,这种方式被称为“打开拥塞窗口”。

持久化解决的问题

HTTP/1.0+ keep-alive连接

首先需要了解的一点是,在HTTP/1.0的各种增强版本中,通讯双方默认是不使用持久化连接的。当客户端请求中含有Connection: Keep-Alive首部,服务器响应中也有Connection: Keep-Alive首部时,双方才会成功建立持久连接。

在服务器返回客户端Connection: Keep-Alive首部的同时,它还可以添加一条Keep-Alive首部。

Connection: Keep-Alive

Keep-Alive: max=5, timeout=120

上面个例子说明,服务器最多还会为另外5个事务保持TCP连接的打开状态,或者将打开状态保持到连接空闲了2分钟之后。

在HTTP/1.0+中还存在哑代理与相关解决方案的知识点,此处不再展开。实际上在新的HTTP/1.1规范中已经没有了Keep-Alive的相关说明,它已被标准抛弃。但浏览器和服务器对HTTP/1.0+的支持依旧广泛,因此了解其相关知识并未过时。

HTTP/1.1持久连接

HTTP/1.1在废弃Keep-Alive后,提出了一种持久连接(persistent connection)的改进型设计取代它。它们目的相同,但后者工作机制更优。

持久连接在默认情况下都是支持的。除非特别指明,否则HTTP/1.1假定所有连接都是持久的。如果客户端需要事务处理完之后直接关闭TCP连接,需要显式地添加一个Connection: close首部。同样如果服务器返回的首部中没有Connection: close首部,客户端会认为连接仍维持在打开状态。

管道化连接

HTTP/1.1允许在持久连接上可选地使用请求管道。在响应到达之前,可以将多余请求放入队列。下图显示了持久化连接是怎样消除TCP连接时延,以及管道化请求是如何消除传输时延的。

Connection: keep-alive——[HTTP权威指南]摘录相关推荐

  1. 《802.11无线网络权威指南》摘录

    <802.11无线网络权威指南>摘录 ---------------------------- 第一.二章: 无线频谱管控: 美国:FCC联邦通信委员会 欧洲:FRO欧洲无线通信局 其他地 ...

  2. 小弟的新书《Ext JS权威指南》终于出版了

    链接:http://product.china-pub.com/3661375&weibo#ml <ext js权威指南> 前 言 第1章 ext js 4开发入门 / 1 1.1 ...

  3. 《Ansible权威指南 》一第2章 Ansible基础元素介绍

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第2章,第2.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2章 ...

  4. 《HTTP权威指南》摘要

    目录 前言 第一章 HTTP 概述 第二章 URL 与资源 第三章 HTTP 报文 报文流 状态码 100~199:信息提示 200~299:成功 300~399:重定向 400~499:客户端错误 ...

  5. 陈潇冰 react权威指南_React中条带化付款的分步指南

    陈潇冰 react权威指南 This is an adapted from several excerpts from Scott Hasbrouck's book, "The Node.j ...

  6. 读书笔记——《802.11无线网络权威指南》

    读书笔记--<802.11无线网络权威指南> 文章目录 读书笔记--<802.11无线网络权威指南> 概要 摘要 概念 MAC层 成帧细节 用户认证 概要 秉承"不动 ...

  7. 计算机网络和http权威指南 读书笔记

    计算机网络笔记 网络层 网络层向上提供无连接的,尽最大努力交付的数据报服务 网络层不提供数据质量承诺 物理层使用的中间设备叫转发器repeater 数据链路层叫网桥bridge 网络层叫路由器rout ...

  8. HTTP权威指南读书笔记

    <<HTTP权威指南>>读书笔记 第一部分:Web的基础 第1章:HTTP概述 主要内容 1.什么是HTTP 2.HTTP的基本组件 HTTP HTTP:HTTP(Hypert ...

  9. HTTP权威指南-连接部分

    http://my.oschina.net/flashsword/blog/80036 最近买了一本<Http权威指南>,读了之后收获不少.把每章的读书心得都记下来,免得忘记,同时也可以分 ...

  10. 中文书籍对《人月神话》的引用(20211105更新161-165本):大师品软件、JavaScript开发框架权威指南

    中文书籍对<人月神话>的引用(第001到160本)>> <人月神话>于1975年出版,1995年出二十周年版.自出版以来,该书被大量的书籍和文章引用,直到现在热潮不 ...

最新文章

  1. 轻松恢复误删除的共享文件,DPM2007系列之六
  2. 8月最新阿里技术栈架构资料
  3. mysql命令行各个参数解释
  4. 在本地安装git的HTML帮助文档
  5. java open course_关于开闭原则 JavaDiscountCourse 类的设计
  6. Linux与C++11多线程编程(学习笔记)
  7. 一键离线下载python安装包:
  8. CoordinatorLayout 使用综述系列(一)
  9. python 访问网站 json_python爬虫用selenium访问一个网址返回的是个json字符串,怎么获取这个json字符串?...
  10. TexturePacker 图片打包工具讲解与使用并且批处理打多包以及资源加密
  11. 进制转化——2022蓝桥杯(E题)
  12. Sandboxie免费开源沙箱软件下载与详细使用教程
  13. 如何建立自己的【渲染农场】终极指南(2)
  14. 蓝桥网算法提高 学霸的迷宫
  15. python psutil模块 硬盘厂家芯片型号_python第三方模块—psutil模块
  16. java 首字母大写方法
  17. 【每天读一点英文】gnuhpc:The World As I See It(节选)
  18. java对接 布防 海康威视_java web整合海康威视录像机摄像SDK
  19. 复合赋值运算符“+=、-=、*=、/=、%=”详解
  20. CoordConv:给卷积加上坐标,从而使其具备了空间感知能力【附Pytorch实现】

热门文章

  1. java读取配置文件路径问题
  2. 计算机课题立项申报书范文,专项课题立项申报书模板.doc
  3. 阴历阳历的相互转换(支持1900~2100年)
  4. Android开发的经典入门教材和学习路线
  5. 广告JS代码效果大全
  6. HeadFirstJava——14_数据结构
  7. nod32 激活码 地址 NOD 32
  8. 【转】只有运用你的逻辑才能看懂其中的恐怖
  9. 20篇聊天机器人领域必读论文速递!
  10. java extjs 教程_EXTJS入门教程及其框架搭建