• 《http权威指南》读书笔记4


    概述

    最近对http很感兴趣,于是开始看《http权威指南》。别人都说这本书有点老了,而且内容太多。我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做,还告诉你为什么这么做。于是我把学到的知识点记录下来,供以后开发时参考,相信对其他人也有用。

    http连接的处理

    1.Connection首部可以承载3中不同类型的标签:

    • HTTP首部字段名,列出了只与此连接有关的首部。
    • 任意标签值,用于描述此连接的非标准选项。
    • 值close,说明操作完成之后需关闭这条持久连接。

    2.串行事务的缺点:

    • 连接时延和慢启动时延会叠加起来。
    • 有些浏览器在对象加载完毕之前无法获知对象的尺寸,因此在加载了足够多的对象之前,无法在屏幕上显示任何内容。

    3.并行连接:http允许客户端打开多条连接,并行的执行多个http事务。并行连接并不一定总是更快的,如果客户端的带宽很小,并行连接带来的性能提升就很小,甚至没什么提升。而且,打开大量连接会消耗很多内存资源,从而引发客户端自身的性能问题。

    4.持久连接:由于初始化了对服务器http请求的应用程序可能会在不就的将来对那台服务器发起更多的请求(站点本地性),所以http/1.1允许http设备在事务处理结束之后将TCP连接保持在打开状态,以便为未来的http请求重用现存的链接。持久连接能够避开连接时延和慢启动时延。

    5.持久连接和并行连接配合使用可能是最高效的方式,现在很多web应用程序都会打开少量的并行连接,其中的每一个都是持久连接。

    6.http/1.0+的keep-alive连接:很多http/1.0浏览器和服务器都进行了扩展,以支持一种keep-alive的早期实验型持久连接。这种连接在http/1.1很少使用了。

    7.keep-alive连接的限制:

    • 必须发送Connection:Keep-Alive请求首部来激活Keep-Alive连接。
    • 如果客户端没有发送Keep-Alive首部,服务器就会在那条请求之后关闭连接。
    • 需要发送正确的Content-Length。

    8.由于有些代理(盲代理)不会识别Connection:Keep-Alive首部,所以它在和浏览器交互的时候会使浏览器一直处于挂起状态,直到客户端或服务器将连接超时,将其关闭为止。为避免此类代理通信问题的发生,现代的代理都绝不能转发Connection首部和所有名字出现在Connection值中的首部。

    9.有一种变通的做法能够解决盲中继的问题,那就是插入Proxy-Connection首部。对于盲代理来说,它会转发Proxy-Connection首部,这样不会有任何问题;对于聪明的代理来说,它会用Connection首部来取代Proxy-Connection首部,这样就实现了持久连接。

    10.http/1.1持久连接默认是激活的,要关闭的话,http/1.1应用程序需要在报文中添加一个Connection:close首部。当然,如果超时的话,客户端和服务端都可以关闭持久连接。

    11.http/1.1允许在持久连接上可选地使用请求管道,这是keep-alive连接上的进一步性能优化。它可以使客户端在响应到达之前就将多条请求放入队列,在上一条请求到达服务器之前,就发送下一条请求。

    12.所有http客户端,服务器或者代理都可以在任意时刻关闭一条TCP传输连接。即使在非错误的情况下,连接也可以在任意时刻关闭。这样就可能重复发送大量的同样的请求,这个时候就带来幂等事务的概念:如果一个事务,不管执行一次还是多次,得到的结果都相同,这个事务就是幂等的。比如说,post一条订单就不是幂等的,因为发送多次会有下多张订单的危险。

  • 相关阅读:
    axios
    MySQL -- 书写规则(常数:字符串、日期、数字、 单引号的使用、半角空格)
    MySQL -- 图解:内连接、外连接、左(外)连接、右(外)连接、全连接
    Linux -- Linux下md5sum用法 (查看文件或字符串的md5值)
    Python3 -- Python获取昨天,今天,明天,本周,上周,本月,上月,本季,本年,去年时间
    Linux -- 执行脚本时&和&&
    Linux -- 定时任务 crontab 命令
    Python3 -- json格式 存储、读取文件
    Hive -- SQL 语法
    Hive -- 目录
  • 原文地址:https://www.cnblogs.com/yangzhou33/p/9226883.html
Copyright © 2020-2023  润新知