网络性能优化:DNS解析、CDN加速、HTTP/2多路复用、预加载与预连接
| 技术领域 | 核心优化点 | 关键指标 |
|---|---|---|
| DNS解析 | 减少查询次数、预解析、使用HTTPDNS | 解析耗时<50ms |
| CDN加速 | 边缘节点缓存、动态加速、智能调度 | 首字节时间<200ms |
| HTTP/2多路复用 | 单一连接并发请求、头部压缩、Server Push | 请求延迟降低30%~50% |
| 预加载 & 预连接 | <link rel="preload/preconnect/dns-prefetch"> | 关键资源加载提前200ms |
面试问答卡片
🎯 面试问题1:如何优化 DNS 解析时间?
面试官考察点:
- 是否掌握 DNS 预解析、HTTPDNS 等实战手段
- 能否区分不同场景下的优化优先级
回答框架:影响分析 → 通用方案(dns-prefetch / preconnect)→ 高级方案(HTTPDNS / 浏览器缓存 )→ 效果量化
简短示例回答:(85字)首屏依赖第三方域名解析,建议在 HTML head 添加 <link rel="dns-prefetch" href="//api.example.com">。对关键域名使用 preconnect 提前建立连接。如果解析自身耗时高,可接入 HTTPDNS 避免 Local DNS 劫持,实测解析耗时从 120ms 降至 30ms。
可能追问:① dns-prefetch 和 preconnect 的区别?② HTTPDNS 原理和落地问题?
🎯 面试问题2:CDN 加速的关键配置和常见问题?
面试官考察点:
- 是否理解 CDN 缓存策略、回源机制
- 能否处理动态资源加速与缓存冲突
回答框架:静态资源(强缓存 + CDN 边缘缓存)→ 动态加速(DCDN / 全站加速)→ 缓存刷新策略 → 监控与容灾
简短示例回答:(95字)静态资源用七牛/阿里云 CDN,设置 Cache-Control: public, max-age=31536000 并开启 CDN 边缘缓存。动态接口通过 CNAME 解析到 DCDN 节点,配合智能路由降低回源延迟。上线前必须刷新 CDN 缓存,避免版本迭代后用户拿到旧资源。
可能追问:① CDN 命中率低如何排查?② 如何保证 CDN 回源高可用?
🎯 面试问题3:HTTP/2 多路复用如何提升性能?实际项目中如何发挥其优势?
面试官考察点:
- 是否理解多路复用与队头阻塞的区别
- 能否在项目中配合 Server Push / 域名合并落地
回答框架:原理(单一 TCP 连接并发流)→ 与传统对比(减少连接数、避免队头)→ 实践(域名收敛、Server Push)→ 限制(H2C、TLS 开销)
简短示例回答:(90字)项目由 HTTP/1.1 升级为 HTTP/2 后,将原有 10 个域名收敛为 2 个,利用多路复用减少连接数。关键 CSS/JS 通过 103 Early Hints 或 Server Push 提前推送。首屏加载时间从 2.8s 降至 1.9s,请求延迟降低 32%。
可能追问:① HTTP/2 的队头阻塞与 HTTP/3 区别?② Server Push 最佳实践与坑点?
<link rel="preload" as="font" crossorigin>;“如何提前建立跨域连接”用 <link rel="preconnect" href="https://fonts.googleapis.com">。回答时强调“只预加载首屏关键资源,避免带宽竞争”。