Skip to content

HTTP

🚦 第一阶段:HTTP 基础概念(理解通信是怎么发生的)

Section titled “🚦 第一阶段:HTTP 基础概念(理解通信是怎么发生的)”

目标:你能看懂浏览器和服务器之间的请求与响应。

核心点:

  1. 什么是 请求 (Request)响应 (Response)
  2. HTTP 的结构:方法、URL、状态码、头部、正文
  3. 常见方法:GETPOSTPUTDELETEPATCH
  4. 常见状态码:200201400404500

练习建议:

  • 打开浏览器开发者工具(Network 面板)
  • 访问一个网站,比如 https://example.com
  • 观察请求和响应内容,看看 URL、方法、头部、状态码、响应体

浏览器的限制, 用户代码 无法手动设置 某些受保护的请求头(称为 forbidden headers),其中包括:

Content-Length // 请求体长度
Host // 请求域名
Origin // 请求来源
Referer // 前一个页面的 URL
Connection // 连接类型
Transfer-Encoding // 编码方式

目标:你能在前端发出请求并理解响应。

要学的内容:

  1. fetch()axios 的使用
  2. Content-TypeAccept
  3. JSON 数据的传输
  4. 同源策略、CORS

练习建议:

  • fetch() 调用一个公开的 API,例如:

    fetch("https://api.github.com/users/octocat")
    .then(r => r.json())
    .then(console.log)
  • 看看返回的 JSON 是什么样的。

🛠️ 第三阶段:HTTP 与后端(API 开发)

Section titled “🛠️ 第三阶段:HTTP 与后端(API 开发)”

目标:你能自己写出一个 API 并理解它与客户端交互。

关键点:

  1. 路由与方法匹配(GET /usersPOST /users
  2. 处理请求体(req.bodyreq.queryreq.params
  3. 返回响应(状态码、头、JSON)
  4. 了解 RESTful 设计
  5. 使用 Postman 或 curl 测试接口

练习建议:

  • 用 Hono、Express、或 FastAPI 写一个简单的 /hello API
  • 用浏览器或 curl 调它,看看返回值。

⚙️ 第四阶段:深入理解(高级话题)

Section titled “⚙️ 第四阶段:深入理解(高级话题)”

等你能做出基本 API 后,可以继续:

  • 缓存(Cache-Control、ETag)
  • Cookie 与 Session
  • 认证(Token、JWT)
  • HTTPS 与 TLS
  • HTTP/2、HTTP/3

HTTP/2 是 HTTP 协议的第二个主流版本,主要特性包括:

  • 二进制分帧:数据以二进制帧传输,效率更高。
  • 多路复用:一个连接上可以并发处理多个请求和响应,避免了 HTTP/1.1 的队头阻塞。
  • 头部压缩:减少了冗余的请求头信息传输。
  • 服务器推送:服务器可以主动推送资源到客户端。

HTTP/2 的多路复用和头部压缩确实有助于提升静态资源加载效率,尤其是在有大量小文件(如图片、CSS、JS)时,可以减少连接数和等待时间,从而有可能提升首屏速度。但:

  • 提升幅度因场景而异,并不是所有项目都能达到”首屏速度提升40%“这么高的效果。
  • 首屏速度还受限于资源体积、服务器带宽、前端渲染等多种因素。

所以,“HTTP/2 优化静态资源加载,首屏速度提升40%“这种说法可以作为某些项目的实际案例,但不是所有场景的普遍结论。


3. 二进制通信协议替代 JSON 的效果

Section titled “3. 二进制通信协议替代 JSON 的效果”
  • HTTP/2 本身就是二进制协议,但你说的”设计二进制通信协议替代 JSON”,通常指的是用 Protobuf、MessagePack 等二进制序列化格式替换 JSON,可以大幅减少消息体积和解析耗时,确实能降低实时消息延迟,50ms 内是有可能实现的,尤其在高并发、低带宽场景下。

  • HTTP/2 能提升静态资源加载效率,有助于首屏速度,但”提升40%“不是绝对值,实际效果需结合具体项目测试。
  • 二进制协议替代 JSON,在实时通信场景下确实能显著降低延迟。

如果你要写技术文档或汇报,建议用”HTTP/2 优化静态资源加载,有助于提升首屏速度,实际提升幅度视具体场景而定”这样的表述更为严谨。

t1