HTTP 学习 | 青训营笔记

66 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天


HTTP 版本

HTTP 0.9

HTTP协议的最初版本,功能简陋,仅支持请求方式 GET,响应只有 HTML 资源。

HTTP 1.0

  • 新增了请求方式 POST 和 HEAD
  • 有了状态码
  • 支持多种文档类型,如图片

HTTP 1.1

  • 新增了请求方式 PUT、PATCH、OPTIONS 和 DELETE

  • 链接复用,一个 TCP 链接可以允许多个 HTTP 请求

  • 缓存

  • 内容协商

HTTP 2.0

  • 二进制协议
  • 压缩 header
  • 服务器推送

对称加密

需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥。

非对称加密

与对称加密算法不同,非对称加密需要两个密钥:公钥和私钥。公钥和私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

HTTP 缓存

缓存字段

  • Expires:响应头,代表该资源的过期时间

  • Cache-Control:请求/响应头,缓存控制字段,精确控制缓存策略

  • If-Modified-Since:请求头,资源最近修改时间,由浏览器告诉服务器

  • Last-Modified:响应头,资源最近修改时间,由服务器告诉浏览器

  • Etag:响应头,资源标识,由服务器告诉浏览器

  • If-None-Match:请求头,缓存资源标识,由浏览器告诉服务器

强缓存:

  • Expires(HTTP/1.0)

  • Cache-Control(HTTP/1.1)

协商缓存:

  • Last-Modified 和 If-Modified-Since(HTTP/1.0)
  • ETag 和 If-None-Match(HTTP/1.1)

缓存区别

  • 强缓存: 向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程
  • 协商缓存: 强缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程