Http学习整理

103 阅读3分钟

什么是缓存?

1.浏览器缓存是浏览器对之前请求过的文件进行缓存,以便下一次访问时重复使用。

2.节省带宽,提高访问速度

3.降低服务器压力

为什么需要缓存?

  • 通过HTPP协议,客户端和浏览器建立连接时需要消耗时间, 而大的响应需要在客户端和服务器之间进行多次往返通信才能获得完整的响应, 这拖延了浏览器可以使用和处理内容的时间, 增加了访问服务器的数据和资源的成本, 因此利用浏览器的缓存机制 重用 以前的数据就变成性能优化时需要考虑的事情。

浏览器缓存

其实我们常说的浏览器缓存机制其实就是HTTP缓存机制 HTTP缓存又分为强制缓存协商缓存

强制缓存

简单来说,就是浏览器内置数据库中缓存每次请求中 “可以被缓存” 的静态资源如 image、css、js文件等,当我们再次重复请求时,会进行一个验证,就是验证 Cache-Controlmax-age 这是一个时间段,单位是(s)秒。 还会验证一个Expires 这是一个时间点, 如果Expires不好用,则会使用max-age。 两者同时存在,或者只存在其中之一,都可以触发强制缓存

  • 当验证满足时间点或者时间段时,浏览器就不会向服务器发送请求而是直接从服务器返回数据,同时其状态码为200
  • 当验证不满足条件的情况下,浏览器就会向服务器正常发送请求

image.png

协商缓存

当浏览器再一次向服务器请求数据时, 浏览器会自动地在请求头附上 If-None-MatchIf-Modified-Since 两个字段(分别对应的是 ETagLast-Modified 的值,两两相等), 然后由服务器端进行校验, 校验通过的话(表明数据有效), 服务器会直接返回 状态码 304 ,且不携带响应体的报文段, 这相当于告诉浏览器:当前缓存有效, 可以直接使用! 校验失败则会和首次请求一样, 返回状态码为200且携带数据响应体的报文段, 同时这个响应头会带上新的ETagLast-Modified, 为下一次协商缓存做好铺垫

Last-Modified 单位时(s)秒 通常是文件最后更新的日期时间戳

ETag 生成一个标记文件的唯一标识,可以使用其中的一种或者几种因子,一般情况下服务器会首先校验 ETag 才会继续比对 Last-Modified,最后才决定是否返回304

计量单位

  • 1bit(位) :1bit
  • 1Byte (字节):1Byte = 8bit
  • 1KB = 1024Byte = 1 * 2(10)Byte
  • 1M = 1024KB = 1 * 2 (20)Byte
  • 1G = 1024MB
  • 1T = 1024GB

5层参考模型

image.png

TCP协议是什么

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。 TCP 使用校验、确认和重传机制来保证可靠传输 而 HTTP协议 就是建立在TCP协议之上的一种应用

一次完整的HTTP服务过程是什么?

  1. 浏览器进行DNS域名解析,得到对应的IP地址
  2. 根据这个IP,找到对应的服务器建立连接(三次握手)
  3. 建立TCP连接后发起HTTP请求(一个完整的http请求报文)
  4. 服务器响应HTTP请求,浏览器得到html代码(服务器如何响应)
  5. 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
  6. 浏览器对页面进行渲染呈现给用户
  7. 服务器关闭TCP连接(四次挥手)