HTTP 与 CDN

共 56 题
#

1. Cache-Control 与 immutable/max-age 在 hash 文件与版本目录策略的工程取舍

A immutable 适用于所有静态资源,包括版本目录中的文件
B max-age 与 immutable 互斥,不能同时使用
C immutable 会强制浏览器每次请求都回源重新验证
D immutable 保证内容在整个生命周期内不变,适合与内容 hash 文件名配合使用 ✓ 正确答案
#

2. Service Worker Cache API 与 HTTP 缓存的协同

A HTTP 缓存先于 Service Worker 执行,SW 无法覆盖
B Cache API 与 HTTP 缓存功能完全相同,可互相替代
C Service Worker 的 fetch 事件先于 HTTP 缓存执行,SW 可决定是否放行 ✓ 正确答案
D 启用 SW 后浏览器 HTTP 缓存自动失效
#

3. CDN 缓存策略与回源机制

A CDN 缓存未命中时直接丢弃请求,不返回内容
B s-maxage 用于控制共享缓存(如 CDN)的缓存时长,max-age 用于浏览器 ✓ 正确答案
C CDN 只能缓存静态资源,无法缓存动态接口
D 回源越多 CDN 性能越好
#

4. Cloudflare Cache API(Cache API)

A 可以缓存 Worker 事件处理器返回的主响应
B 与浏览器 Cache API 完全等价,可共享同一份缓存
C 只能用于缓存 Worker 内通过 fetch 发出的子请求响应 ✓ 正确答案
D 无法手动删除缓存条目
#

5. stale-while-revalidate 在 CDN 缓存的工程价值

A 每次请求都强制回源并丢弃缓存
B 过期后立即返回陈旧内容,同时后台异步刷新缓存 ✓ 正确答案
C 只对 POST 请求生效
D 会阻止浏览器缓存任何资源
#

6. CDN 节点选择与 Anycast 网络在边缘性能的应用

A CDN 节点选择只依赖 DNS,与 Anycast 无关
B Anycast 要求每个节点必须使用独立 IP 地址
C Anycast 无法实现高可用
D Anycast 让同一 IP 在多节点可达,由 BGP 路由就近选择 ✓ 正确答案
#

7. Cloudflare/CloudFront/Edge CDN 的边缘计算能力

A 边缘计算只能在源站执行,无法在边缘节点执行
B 边缘计算资源无限,适合承载所有复杂逻辑
C 边缘计算与 CDN 缓存完全无关
D Cloudflare Workers 等边缘运行时可在离用户最近的节点执行代码 ✓ 正确答案
#

8. 缓存预热、缓存失效与版本管理

A hash 文件名发布时仍需手动 Purge 才能生效
B 版本管理只能通过 CDN Purge 实现
C no-cache 会阻止浏览器缓存任何资源
D 缓存预热用于发布后主动填充边缘缓存,避免回源惊群 ✓ 正确答案
#

9. HTML no-cache、JS/CSS immutable 长缓存的缓存分层

A no-cache 意味着浏览器完全不缓存 HTML
B HTML 每次重新验证保证拿到最新引用,静态资源 hash 长缓存实现复用 ✓ 正确答案
C 静态资源必须用 no-store 才能保证更新
D 该分层无法在发布时更新资源
#

10. Cache API 在 Service Worker 之外的工程价值与现代浏览器限制

A Window 上下文也可访问 Cache API,但 Secure Context 与配额是限制 ✓ 正确答案
B Cache API 只能在 Service Worker 中使用
C Cache API 存储容量无限
D Cache API 不受浏览器分区缓存影响
#

11. fetch/XMLHttpRequest/WebSocket/SSE/EventSource 在通信模型与重连策略的工程取舍

A SSE 是双向全双工通信
B fetch 内建自动重连机制
C SSE 基于 HTTP 单向推送并内建自动重连,WebSocket 是全双工双向 ✓ 正确答案
D WebSocket 内建 Last-Event-ID 断点续传
#

12. ESI(Edge Side Includes)在边缘片段缓存的工程价值

A ESI 通过边缘标签把页面片段分别缓存并组装 ✓ 正确答案
B ESI 只能缓存整页,无法拆分片段
C ESI 让动态内容无法被缓存
D ESI 与 CDN 缓存完全无关
#

13. Cloudflare CDN 与 Fastly/KeyCDN 在灰度发布与回源的工程取舍

A 所有 CDN 的灰度发布能力完全相同
B CDN 无法实现灰度发布
C KeyCDN 提供最强的边缘可编程能力
D Fastly 以 VCL 提供极细粒度缓存与回源控制,秒级 Purge ✓ 正确答案
#

14. Vary 头部在多语言/多设备响应的工程价值

A Vary 用于禁止缓存所有响应
B Vary 声明响应因某些请求头而异,需把这些头纳入缓存键 ✓ 正确答案
C Vary 会大幅提升缓存命中率
D Vary 只对 POST 请求生效
#

15. 多级缓存(浏览器、CDN、边缘、源站)的协作

A 浏览器缓存失效后会直接回源,不经过 CDN
B 源站不需要应用层缓存
C CDN 与浏览器缓存使用同一套头,无法区分
D 请求逐级向上命中:浏览器→CDN→边缘→源站,各自缓存受对应头控制 ✓ 正确答案
#

16. Cookie 的 SameSite、HttpOnly、Secure 在安全与缓存的工程取舍

A SameSite=None 是天然的 CSRF 防护
B HttpOnly 让 Cookie 无法被 JavaScript 读取,可防 XSS 窃取 ✓ 正确答案
C Secure 属性会让 Cookie 无法发送
D 含 Cookie 的个性化响应应缓存到 CDN 共享缓存
#

17. HTTP/3(QUIC,基于 UDP)在多路复用与连接迁移的工程价值

A QUIC 用连接 ID 标识连接,支持网络切换时连接迁移 ✓ 正确答案
B QUIC 基于 TCP,无法解决队头阻塞
C QUIC 每条流共享一个 TCP 流,任何丢包都会阻塞所有流
D QUIC 无法与 TLS 结合使用
#

18. 从 URL 输入到首帧显示的导航阶段(DNS、TCP、TLS、HTTP、解析、渲染)

A DNS 解析发生在 HTML 渲染完成之后
B JavaScript 执行不会影响 HTML 解析
C 建连顺序为 DNS→TCP→TLS→HTTP 请求,随后解析渲染 ✓ 正确答案
D TTFB 由渲染阶段决定
#

19. HTTP/3 的 0-RTT 握手与重放风险的应用边界

A 0-RTT 数据绝对安全,不存在重放风险
B 0-RTT 首包即携带请求数据以省 RTT,但存在重放风险,仅适合幂等请求 ✓ 正确答案
C 0-RTT 比 1-RTT 慢一个 RTT
D 0-RTT 无法与 TLS 1.3 结合
#

20. 预加载扫描器(Preload Scanner)对关键资源发现的影响

A 预加载扫描器会阻塞 HTML 解析
B 预加载扫描器在解析阻塞时并行扫描后续 HTML,提前发现并下载关键资源 ✓ 正确答案
C 预加载扫描器只能发现图片,无法发现脚本
D 预加载扫描器与 preload 无关
#

21. Service Worker 与导航的协作(fetch 事件、Navigation Preload)

A Navigation Preload 允许 SW 并行发起网络请求获取主文档,消除额外延迟 ✓ 正确答案
B Navigation Preload 让 SW 处理与网络请求串行执行,更慢
C SW 无法拦截导航请求
D preloadResponse 与缓存结果必须二选一
#

22. 导航中的 HTTP/2 优先级与依赖提示对关键资源加载顺序的影响

A HTTP/2 优先级由服务端强制执行,浏览器无需 preload
B 所有资源必须设置相同优先级
C preload 与 fetchpriority 显式提示可更精确控制关键资源加载顺序 ✓ 正确答案
D preload 越多性能越好,无副作用
#

23. HPACK/QPACK 头部压缩与多路复用

A 头部压缩只在 HTTP/1.1 中使用
B QPACK 与 HPACK 完全相同
C HPACK 通过静态表与动态表压缩头部,QPACK 用专用流解耦避免队头阻塞 ✓ 正确答案
D 多路复用不需要头部压缩
#

24. 队头阻塞(HOL)在 HTTP/1.1、HTTP/2、HTTP/3 的演进

A HTTP/2 解决协议层 HOL,但 TCP 层 HOL 仍存在,HTTP/3 用 QUIC 解决 ✓ 正确答案
B HTTP/2 彻底解决了所有队头阻塞
C HTTP/1.1 没有队头阻塞问题
D HTTP/3 基于 TCP,无法解决队头阻塞
#

25. HTTP/1.1、HTTP/2、HTTP/3 的连接模型差异

A 三者都基于 TCP 单连接
B HTTP/3 与 HTTP/1.1 连接模型完全相同
C HTTP/1.1 多连接串行,HTTP/2 单连接多路复用(TCP),HTTP/3 单连接多路复用(QUIC) ✓ 正确答案
D HTTP/2 不支持多路复用
#

26. SSE 的自动重连与 Last-Event-ID 与 HTTP/2/HTTP/3 的取舍

A SSE 自动重连并可通过 Last-Event-ID 请求头断点续传 ✓ 正确答案
B SSE 无法自动重连
C SSE 是双向全双工协议
D SSE 在 HTTP/2 下无法工作
#

27. DNS over HTTPS 与 Early Hints(103)

A DoH 会增加 DNS 解析延迟
B Early Hints 是 DNS 加密协议
C DoH 把 DNS 查询加密在 HTTPS 中,Early Hints 用 103 提前返回 preload 提示 ✓ 正确答案
D 103 状态码表示服务器错误
#

28. WebTransport 的双向流 + datagram 在大型应用的网络性能工程价值

A Streams 无序不可靠,datagram 有序可靠
B WebTransport 提供有序可靠流与无序低延迟 datagram,支持真多路复用 ✓ 正确答案
C WebTransport 基于 WebSocket
D datagram 保证可靠交付
#

29. DNS Prefetch / preconnect/dns-prefetch 与 HTTP/2 连接复用的工程价值

A preconnect 提前建立连接并可配合 HTTP/2 连接复用,dns-prefetch 只解析 DNS ✓ 正确答案
B dns-prefetch 会建立 TCP 连接,preconnect 只解析 DNS
C 两者功能完全相同
D preconnect 应大量使用在页面所有域名上
#

30. HTTP 103 Early Hints 与 preload 在 TTFB 与 LCP 的工程价值

A 103 是错误状态码
B Early Hints 会阻塞 TTFB
C preload 只能用于 CSS 资源
D 103 Early Hints 在最终响应前提前发送 preload 提示,缩短关键资源等待 ✓ 正确答案
#

31. HTTP Range Request 在视频与大型资源下载的应用

A Range 请求会强制下载整个文件
B Range 请求用于请求资源的特定字节范围,服务端返回 206 ✓ 正确答案
C 服务端无需声明 Accept-Ranges 也可支持 Range
D Range 只对 POST 有效
#

32. HTTP 方法语义(GET 安全幂等、POST/PATCH 边界)

A GET 有副作用,不应被缓存
B 所有方法都是安全的
C PUT 用于部分更新且非幂等
D POST 非幂等,重复执行可能产生不同结果,不宜自动重试 ✓ 正确答案
#

33. HTTP/2 的 Server Push(已弃用)与替代 在大型前端项目的工程价值

A Server Push 因无法感知浏览器缓存而弃用,替代方案是 103 Early Hints + preload ✓ 正确答案
B Server Push 仍被所有浏览器支持
C Server Push 比 preload 更节省带宽
D Server Push 与浏览器缓存无冲突
#

34. WebSocket 在大型应用的网络性能工程价值

A WebSocket 提供全双工低延迟通信,但需处理心跳、重连与水平扩展 ✓ 正确答案
B WebSocket 每次通信都需重新握手
C WebSocket 连接可被 HTTP 缓存
D WebSocket 无需心跳保活
#

35. fetch.keepalive 与单次请求后端连接复用的工程价值

A keepalive 请求体积无限制
B keepalive 与连接复用是同一概念
C keepalive 让请求在页面卸载后仍能发送,用于可靠上报 ✓ 正确答案
D 连接复用只在 HTTP/1.1 存在
#

36. AbortController 在 fetch 链路取消的工程价值(含上传进度)

A abort 后请求仍会完成
B AbortController 只能取消上传,不能取消下载
C AbortController 可通过 signal 取消请求,并需区分 AbortError 与真实错误 ✓ 正确答案
D fetch 取消后无法捕获异常
#

37. HTTP/2 的连接复用(Connection Reuse)

A HTTP/2 单连接多路复用,多个请求复用一条连接,减少握手开销 ✓ 正确答案
B HTTP/2 每个请求都建立独立连接
C HTTP/2 连接复用只能用于跨域
D HTTP/2 连接复用会增加连接数
#

38. HTTP 状态码在 RESTful API 的正确使用

A 401 表示未认证,403 表示无权限,429 表示限流,应精确区分 ✓ 正确答案
B 所有错误都应返回 200
C 400 是服务端错误
D 503 表示参数错误
#

39. TLS 1.3 在大型前端项目的工程价值

A TLS 1.3 握手比 TLS 1.2 慢
B TLS 1.3 将握手降至 1-RTT 并支持 0-RTT,提升安全与性能 ✓ 正确答案
C TLS 1.3 强制使用静态 RSA 密钥交换
D TLS 1.3 与 HTTP/2 无关
#

40. HTTP 与传输层在跨端、跨平台、跨框架场景下的应用

A 所有端都支持完全相同的 HTTP 能力
B 传输层在各端完全一致
C 跨框架无法复用请求层
D 跨端需用统一请求层封装并考虑各端差异,BFF 可统一协议与鉴权 ✓ 正确答案
#

41. 缓存与 CDN 在客户端与边缘协同中涉及哪些源码关键路径与实现原理,应如何在性能与一致性之间取舍

A 静态资源 hash 长缓存提升性能,HTML no-cache 保证一致,可兼顾两者 ✓ 正确答案
B 缓存越长性能越好且一致性好
C 客户端与边缘缓存无法协同
D 一致性只能靠禁用缓存保证
#

42. Service Worker 在离线缓存与网络优先/缓存优先策略的现代应用

A network-first 先请求网络失败回退缓存,保障在线新鲜、离线可用 ✓ 正确答案
B cache-first 先走网络,network-first 先走缓存
C 缓存策略无法离线工作
D SWR 会阻塞等待网络
#

43. CDN 边缘缓存(Cloudflare、Fastly、Vercel Edge)

A 所有 CDN 边缘缓存能力相同
B Cloudflare 不支持边缘计算
C Vercel Edge 无法缓存
D Fastly 以 VCL 提供精细缓存控制与秒级 Purge,Vercel Edge 与 Next.js 部署深度集成 ✓ 正确答案
#

44. CDN 缓存击穿、雪崩与穿透在前端 API 缓存的工程防护

A 击穿用互斥锁避免并发回源,雪崩用随机过期,穿透用空值缓存 ✓ 正确答案
B 缓存击穿用随机过期时间解决
C 穿透指热点 key 过期
D 三种问题无需防护
#

45. Service Worker 的 cache.match 与 fetch 的缓存策略工程实践

A cache.match 会自动发起网络请求
B 缓存策略无法处理 opaque 响应
C cache.match 支持 POST 请求缓存
D cache.match 匹配缓存命中即返回,fetch 走网络,策略是两者的组合 ✓ 正确答案
#

46. Cache Partitioning(分区缓存)在第三方资源的浏览器缓存隔离

A 分区缓存让第三方资源在所有站点全局共享缓存
B 分区缓存不影响缓存行为
C 分区缓存按顶级站点隔离第三方资源缓存,提升隐私但降低命中率 ✓ 正确答案
D 分区缓存只影响第一方资源
#

47. Preload 与 Prefetch(<link rel>)的工程差异

A preload 用于预取未来页面资源,prefetch 用于当前页关键资源
B 两者优先级相同
C preload 高优先级加载当前页关键资源,prefetch 低优先级预取未来资源 ✓ 正确答案
D prefetch 比 preload 优先级更高
#

48. CDN 的边缘函数(Edge Functions、Cloudflare Workers、Vercel Edge)

A 边缘函数在源站大规模执行
B 边缘函数与缓存无关
C 边缘函数可承载所有复杂状态逻辑
D 边缘函数在边缘节点运行,适合轻量鉴权、路由、改写等逻辑,但资源受限 ✓ 正确答案
#

49. Stale-If-Error 缓存在后端故障时的工程降级策略

A stale-if-error 在回源失败时返回错误页
B stale-if-error 在回源失败时返回陈旧缓存,提高可用性 ✓ 正确答案
C stale-if-error 只对首次请求生效
D stale-if-error 会丢弃缓存
#

50. Service Worker 的 Background Sync API 在离线数据同步的现代应用

A Background Sync 只在页面打开时执行同步
B Background Sync 在网络恢复时于 SW 中执行后台同步,适合离线数据恢复 ✓ 正确答案
C Background Sync 无法离线工作
D Background Sync 需要页面保持打开
#

51. CDN 的回源(origin)与缓存命中率优化的工程实践

A 缓存键越碎片化命中率越高
B 随机 query 参数有助于缓存命中
C 回源失败无需降级
D 精简缓存键、合理缓存时长与预热可提升命中率,减少回源 ✓ 正确答案
#

52. HTTP 缓存验证器(ETag/If-None-Match)相较时间戳的工程取舍

A ETag 基于时间戳,Last-Modified 基于内容哈希
B Last-Modified 比 ETag 更精确
C 两者都不能用于缓存验证
D ETag 是强验证器,能精确判断内容变化,Last-Modified 是弱验证器 ✓ 正确答案
#

53. Cookie 缓存与 Cache API 在身份验证场景的工程协作

A 认证响应应缓存到 CDN 共享缓存
B Cache API 无需考虑用户隔离
C 认证 Cookie 用于鉴权,个性化响应不应进共享缓存,避免跨用户泄露 ✓ 正确答案
D 认证数据可以随意缓存
#

54. CDN 的边缘缓存与源站压缩(gzip、brotli)的工程协同

A 压缩响应无法被缓存
B 缓存压缩响应需正确区分 Accept-Encoding,避免错误的 Content-Encoding ✓ 正确答案
C gzip 压缩率高于 brotli
D 压缩与缓存无关
#

55. Cache Storage 的配额管理与清理策略的工程应用

A Cache Storage 受配额限制,需版本化缓存并在 activate 时清理旧缓存 ✓ 正确答案
B Cache Storage 容量无限
C Cache Storage 与 IndexedDB 使用独立配额
D 配额耗尽不影响缓存功能
#

56. CDN 在边缘计算(Edge Compute)的 SSR/SSG 与中间件的现代应用

A 边缘 SSR/SSG 与中间件无法与边缘缓存结合
B 边缘中间件可处理鉴权、路由、改写,SSR/SSG 配合边缘缓存实现快速响应 ✓ 正确答案
C 边缘计算资源无限,可承载所有渲染
D 中间件只能在源站运行