面经-http1.0 - http1.1

167 阅读3分钟

响应状态码

6-五大类HTTP状态码.webp

  • 100 (Continue)——在请求大资源前的预热请求,206 (Partial Content)——范围请求的标识码,409 (Conflict)——请求与当前资源的规定冲突,410 (Gone)——资源已被永久转移,而且没有任何已知的转发地址。

缓存处理

对于一些具有重复性的 HTTP 请求,比如每次请求得到的数据都一样的,我们可以把这对「请求-响应」的数据都缓存在本地,下次就直接读取本地的数据。

http1.0

协商缓存

HTTP1.0cache1.2f2b7eac.png

  • 简单来说,就是客户端第一次请求的时候服务器返回的响应体里有一个Last-Modified标签,该标签标记了被请求资源在服务器端的最后一次修改。在请求头中,使用If-Modified-Since标签:该时间之后,我要请求的资源是否有被修改过?值通常都是Last-Modified。如果没修改,服务器会返回304,让你去本地缓存里找,如果修改,返回200的响应体,并带全新data。。

image.png

连接方式

  • 1.0短连接:客户端和服务器每进行一次 HTTP 操作,就建立一次连接任务结束就中断连接。当客户端浏览器访问的某个 HTML 或其他类型的 Web 页中包含有其他的 Web 资源(如 JavaScript 文件、图像文件、CSS 文件等),每遇到这样一个 Web 资源,浏览器就会重新建立一个TCP连接,这样就会导致有大量的“握手报文”和“挥手报文”占用了带宽。

  • 1.1长连接:客户端告诉服务端 “我向你请求连接,并且连接成功建立后,请不要关闭”。也就是说在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输 HTTP 数据的 TCP 连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

但是凡事都有一个度,tcp一直链接也是对资源的浪费。。有的服务器会设置超时时间。。时间内没有新的请求就关闭tcp。

  • 1.0 1.1 都可以选什么连接,,上面说的只是默认情况.

image.png

18-队头阻塞.webp

Host头处理

image.png

带宽优化

范围请求

HTTP/1.1引入了范围请求(range request)机制,以避免带宽的浪费。当客户端想请求一个文件的一部分,或者需要继续下载一个已经下载了部分但被终止的文件,HTTP/1.1可以在请求中加入Range头部,以请求(并只能请求字节型数据)数据的一部分. 返回206状态码,避免1.0把它认为是完整数据响应,放入缓存

100状态码

  • 1.1加入了100状态码
    客户端有一个较大的文件需要上传并保存,但是客户端不知道服务器是否愿意接受这个文件,所以希望在消耗网络资源进行传输之前,先询问一下服务器的意愿。实际操作为客户端发送一条特殊的请求报文,报文的头部应包含
Expect: 100-continue

此时,如果服务器愿意接受,就会返回 100 Continue 状态码,反之则返回 417 Expectation Failed 状态码

download.png

HTTP1.1continue2

压缩

  • 1.0对数据压缩的选项提供的不多.不支持压缩细节的选择,也无法区分端到端(end-to-end)压缩或者是逐跳(hop-by-hop)压缩。
  • HTTP/1.1则对内容编码(content-codings)和传输编码(transfer-codings)做了区分。内容编码总是端到端的,传输编码总是逐跳的。

image.png