HTTP相关

HTTP缓存

缓存位置:按缓存位置分为Service Worker、Memory Cache、Disk Cache、Push Cache等

缓存策略:

  1. 强缓存 : Expires 、Cache-Control

    关键HTTP头:

    • Expires: Wed, 21 Oct 2025 07:28:00 GMT(绝对时间,容易受客户端时间影响)

    • Cache-Control: max-age=3600, public(相对时间,推荐使用)

    存储位置:

    • Memory Cache(内存缓存):用于短时间内频繁访问的资源(如当前页面的 CSS、JS)。

    • Disk Cache(磁盘缓存):用于存储较大的资源,关闭页面后仍然有效。

    如果有缓存就直接返回缓存,不需要向服务器发起请求

    检查强缓存(Cache-Control/Expires):

    • 若未过期 → 直接使用缓存(状态码 200 (from cache))。

    • 若过期 → 进入协商缓存流程

  2. 协商缓存 : ETag(缓存存储) 、Last-Modified(缓存存储)、 If-Modified-Since(发起请求携带)、If-None-Match(发起请求携带)

    关键HTTP头:

    • Last-Modified(资源的最后修改时间) & If-Modified-Since

    • ETag(资源的唯一标识符) & If-None-Match

    协商缓存验证

    如果第一次发起请求,没有缓存,则将ETag ,Last-Modified 作为标志

    有缓存也要向服务器发起请求,并携带标志到请求头,格式:If-Modified-Since : Last-Modified 的值

    • 浏览器携带 If-None-Match(ETag 值)或 If-Modified-Since(时间戳)向服务器发起请求。

    • 服务器对比标识:

      • 未更新 → 返回 304,浏览器使用缓存。

      • 已更新 → 返回 200 和新资源,更新本地缓存。

HTTP 1.x 和 HTTP 2.0有什么区别(含HTTPS)

HTTP 基本的报文格式就是 header + body,头部信息是 key-value 简单文本的形式

HTTP 1.0 :

一次 TCP 连接中只能发一个请求,也就是每次发请求都要三次握手四次挥手

HTTP 1.1 : 优化 HTTP1.0
  1. 支持管道长连接:一次 TCP 连接可以发送多个请求,并且不用等待前一个请求响应回来再发起(不管响应没有都可以继续发)

  2. 队头阻塞:返回需要按照顺序,先发送的请求,必须由服务器先返回(发送A、B两个请求,A请求先发送但处理慢 - 30s,B请求后发送但处理快 - 2s,B请求会等待间隔的20多秒才能返回)

HTTP 2.0 : 优化 HTTP 1.1
  1. 基于HTTPS

  2. 头部压缩 :如果你同时发出多个请求,他们的头是一样的或是相似的,那么,协议会帮你消除重复的部分

    HPACK 算法:在客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。

  3. 多路复用:并发请求,但不用按照顺序返回 ===> 解决队头阻塞,具体措施为数据采用二进制格式、stream流传输

  4. 数据二进制格式:采用二进制格式方便流传递,其次二进制报文可以直接被计算器解析,提高效率

  5. stream流传输:添加数据包标识,指出数据包属于哪一个请求

  6. 服务器可以主动推送

HTTP 3.0 : 优化 HTTP 2.0

多个 HTTP 请求在复用一个 TCP 连接,下层的 TCP 协议是不知道有多少个 HTTP 请求的。所以一旦发生了丢包现象,就会触发 TCP 的重传机制,这样在一个 TCP 连接中的所有的 HTTP 请求都必须等待这个丢了的包被重传回来。

处理:

  1. 将下层的 TCP 换成 UDP,虽然 UDP 是不可靠传输的,但基于 UDP 的 QUIC 协议 可以实现类似 TCP 的可靠性传输。

  2. 头部压缩算法也升级成了 QPack

  3. HTTPS 要建立一个连接,要花费 6 次交互,先是建立三次握手,然后是 TLS/1.3 的三次握手。QUIC 直接把以往的 TCP 和 TLS/1.3 的 6 次交互合并成了 3 次,减少了交互次数

HTTPS :
  1. HTTP 是明文传输,HTTPS 是对称加密与非对称加密组成的混合加密

  2. HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,交互次数增加

  3. HTTP 默认端口是 80 ,HTTPS 默认端口是 443

  4. HTTPS 需要证书

相关推荐
杜子不疼.1 小时前
无需公网 IP!Grafana+内网穿透轻松实现数据看板远程访问
网络协议·tcp/ip·grafana
浪客川2 小时前
【百例RUST - 014】Trait
服务器·网络·rust
遇见火星2 小时前
Zabbix自动化监控:自动发现+自动注册实战,告别手动添加主机!
网络·自动化·zabbix
运维老郭2 小时前
TCP/IP协议栈排坑指南:3个高频连接故障与tcpdump精准定位
网络协议·tcp/ip·tcpdump
张璐月3 小时前
[eCapture] OpenSSL 文件 Hook 机制
网络·ebpf·ecapture
亚空间仓鼠3 小时前
Docker 容器技术入门与实践 (四):Docker存储与网络
网络·docker·容器
a***72893 小时前
SQL 注入漏洞原理以及修复方法
网络·数据库·sql
MAXrxc4 小时前
简单园区网实验
网络·智能路由器
埃伊蟹黄面4 小时前
应用层HTTP协议
linux·网络·网络协议·http