前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
  • HTTP

    • 基础篇

      • HTTP的前世今生
      • HTTP是什么
      • HTTP世界全览
      • HTTP分层
      • 键入网址到回车发生什么
      • HTTP报文是什么样子的
      • 理解请求方法
      • URI
      • 响应状态码
      • HTTP有哪些特点
      • HTTP优缺点
      • HTTP的实体数据
      • HTTP传输大文件
      • HTTP的连接管理
      • HTTP的重定向
      • HTTP的Cookie机制
      • HTTP的缓存控制
      • HTTP的代理服务
      • HTTP的缓存代理
    • 高级篇

    • 扩展篇

  • 浏览器相关

  • 计算机基础

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

迁移到HTTP2|HTTP协议篇

# 迁移到HTTP2

30 秒速记

  • 迁移到 HTTPS 后是否继续升级 HTTP/2,需要单独评估性能收益与改造成本,不能把两次升级视为同一件事。
  • HTTP/2 是对 HTTP 协议的重要升级,但题述背景下的推广力度和普及速度低于 HTTPS。
  • 是否值得迁移应结合现有站点瓶颈判断,而不是只依据协议新旧做决定。
  • 评估重点应落在升级能带来多少实际收益,以及这些收益能否覆盖部署、兼容和维护成本。

迁移到 HTTPS 后要不要继续升级 HTTP/2,应看真实性能收益能否覆盖部署、兼容和维护成本。 如果页面有大量同源小资源,瓶颈集中在请求排队、头部传输和网络往返,HTTP/2 的多路复用与 HPACK 往往更有价值。若主要耗时来自大图片、后端计算、第三方脚本或弱网丢包,只替换协议的改善可能有限。上线前应通过同内容灰度对比 LCP、排队时间、错误率和延迟,并确认 ALPN 实际协商为 h2。

前面你已经看到了新的 HTTP/2 和 HTTP/3 协议,了解了它们的特点和工作原理,如果再联系上前几天“安全篇”的 HTTPS,你可能又会发出疑问:

“刚费了好大的力气升级到 HTTPS,这又出了一个 HTTP/2,还有再次升级的必要吗?”

与各大浏览器“强推”HTTPS 的待遇不一样,HTTP/2 的公布可谓是“波澜不惊”。虽然它是 HTTP 协议的一个重大升级,但 Apple、Google 等科技巨头并没有像 HTTPS 那样给予大量资源的支持。

直到今天,HTTP/2 在互联网上还是处于“不温不火”的状态,虽然已经有了不少的网站改造升级到了 HTTP/2,但普及的速度远不及 HTTPS。

所以,你有这样的疑问也是很自然的,升级到 HTTP/2 究竟能给我们带来多少好处呢?到底“值不值”呢?

**原理拆解:**迁移判断应从真实瓶颈反推协议收益。若页面包含大量同源小资源,时间主要消耗在连接排队、请求头传输和往返等待上,HTTP/2 的多路复用与 HPACK 往往有效;若主要耗时来自大图片、后端计算、第三方脚本或弱网丢包,仅替换协议可能改善有限。上线还涉及服务器或 CDN 配置、TLS 能力、监控口径和回滚方案,因此应把协议协商成功率与用户体验指标同时纳入验收。

**最小验证:**输入两个分别启用 HTTP/1.1 和 HTTP/2 的测试页面地址,在浏览器控制台运行以下代码,验证资源协商协议以及平均响应时长。两个页面应具有相同内容,并允许通过 Timing-Allow-Origin 暴露跨域性能数据。

const pages = [
  "https://h1.example.com/index.html",
  "https://h2.example.com/index.html"
];

async function measure(url) {
  const samples = [];
  for (let i = 0; i < 5; i++) {
    const target = `${url}?sample=${Date.now()}-${i}`;
    performance.clearResourceTimings();
    await fetch(target, { cache: "no-store" });
    const entry = performance.getEntriesByName(target)[0];
    samples.push({
      protocol: entry.nextHopProtocol,
      duration: entry.duration
    });
  }
  return {
    url,
    protocol: samples.map(x => x.protocol),
    averageMs: samples.reduce((n, x) => n + x.duration, 0) / samples.length
  };
}

Promise.all(pages.map(measure)).then(console.table);
@前端进阶之旅: 代码已经复制到剪贴板

nextHopProtocol 的预期值通常分别为 http/1.1 和 h2,averageMs 只能作为小样本线索,不能直接代表整页收益。正式验证应使用同内容、同地域、同缓存策略的灰度流量,对比 LCP、资源排队时间、连接数、错误率及 p50/p95 延迟。

**边界与排查:**跨域响应缺少 Timing-Allow-Origin 时,部分计时字段可能不可用;缓存命中、CDN 节点差异和 TLS 会话复用也会污染对比。若协议未显示为 h2,应检查浏览器协商结果、CDN 回源链路和服务器的 ALPN 配置,而不是依据配置文件推断升级已经生效。

面试官追问

追问 1架构会上有人看到竞品已启用 HTTP/2,便断言同内容页面切换后 LCP 一定下降,你会如何反驳?
参考回答

不能由竞品配置推导本站 LCP 必然改善,收益取决于真实瓶颈和请求形态。大量同源小资源、请求头和连接排队更可能受益;若耗时集中在大图片、后端计算或第三方脚本,单纯换协议的效果可能有限。

追问 2你负责给同一套页面做 HTTP/1.1 与 HTTP/2 灰度,除了平均请求耗时,还会要求团队采集什么?
参考回答

应先用 nextHopProtocol 或链路指标确认实际协商为 http/1.1 与 h2,再比较 LCP、资源排队、连接数、错误率及 p50/p95 延迟。两组必须保持内容、地域和缓存策略一致,否则差异可能来自 CDN 或缓存而非协议。

追问 3测试人员用跨域 fetch 跑了五次样本,averageMs 显示 h2 更快,就要求全量发布,你会批准吗?
参考回答

不会,五次跨域请求的平均值只能作为线索,不能代表整页或真实用户收益。还要确认响应提供 Timing-Allow-Origin,并控制缓存、CDN 节点和 TLS 会话复用;正式结论应来自同条件灰度的体验与尾延迟指标。

追问 4CDN 控制台显示已开启 HTTP/2,浏览器的 nextHopProtocol 却持续返回 http/1.1,你会沿链路检查什么?
参考回答

应以浏览器实际协商结果为准,先检查入口的 ALPN 配置、证书终止点及 CDN 边缘是否真正提供 h2。还要核对回源与中间代理链路,避免把控制台开关当成端到端生效证明;必要时结合网络面板和服务端日志定位降级位置。

追问 5存量站点改造成本较高,但页面有上百个同源小资源和明显排队,你会怎样决定是否迁移?
参考回答

该请求形态与 HTTP/2 的多路复用和 HPACK 收益较匹配,值得先做可回滚灰度验证。决策仍需计入服务器或 CDN、TLS、监控口径和运维成本;只有协议协商率与用户体验指标同时改善,才适合扩大流量。

# HTTP/2 的优点

30 秒速记

  • HTTP/2 保留 HTTP/1 的语义,已有方法、状态码和应用逻辑通常可以继续使用,迁移重点落在传输实现。
  • 按题述协议与浏览器实践,HTTP/2 通常运行在至少 TLS 1.2 和具备前向安全性的 ECDHE 之上,并可借助 False Start 缩短握手;具体约束需按实现版本确认。
  • HPACK 压缩重复的请求与响应头,题述数据给出的流量节省约为 5%~10%,实际收益取决于头部规模和重复度。
  • 多路复用让多个请求与响应共享一个 TCP 连接并发传输,减少连接资源消耗,提高带宽利用率,也缓解 HTTP/1 应用层的队头阻塞。
  • 流优先级用于把有限带宽优先分给关键资源;服务器推送可省去客户端解析页面后再发起请求的等待。
  • 这些优化仍建立在单个 TCP 连接上,题述未声称消除了所有阻塞;流依赖和等待仍可能产生延迟。

HTTP/2 保留了 HTTP/1 的业务语义,主要通过头部压缩和多路复用提升传输效率。 HPACK 会压缩重复头字段,而多个请求与响应可以在一条 TCP 连接上交错传输,从而减少连接资源和应用层排队。流优先级可让关键资源先获得带宽,服务器推送也能省去解析页面后再请求的等待,但实际收益取决于链路实现。它仍受单条 TCP 有序传输约束,丢包时可能等待重传,推送也不能只凭协议支持就认定生效。

← HTTP3展望CDN →

fe
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
  • HTTP

    • 基础篇

      • HTTP的前世今生
      • HTTP是什么
      • HTTP世界全览
      • HTTP分层
      • 键入网址到回车发生什么
      • HTTP报文是什么样子的
      • 理解请求方法
      • URI
      • 响应状态码
      • HTTP有哪些特点
      • HTTP优缺点
      • HTTP的实体数据
      • HTTP传输大文件
      • HTTP的连接管理
      • HTTP的重定向
      • HTTP的Cookie机制
      • HTTP的缓存控制
      • HTTP的代理服务
      • HTTP的缓存代理
    • 高级篇

    • 扩展篇

  • 浏览器相关

  • 计算机基础