部署策略与 CDN

共 55 题
#

1. 前端部署后的健康检查(探针/合成监控)与自动回滚策略如何设计?

A 健康检查只需看 HTTP 200
B 自动回滚无需版本化部署
C 应结合基础探针与合成监控,在观察窗口内超阈值自动回滚并保留人工兜底 ✓ 正确答案
D 回滚只能在人工操作下进行
#

2. CI/CD(GitHub Actions、GitLab CI)

A GitHub Actions 只能做构建,不能部署
B 两者都使用 YAML 定义流水线,均可实现 install/lint/test/build/deploy 全流程 ✓ 正确答案
C GitLab CI 不支持自定义 runner
D 两者都使用 JSON 配置
#

3. Cloudflare Pages 的原子部署与回滚(Deployment ID)

A Deployment ID 只用于预览
B 新部署会覆盖旧版本,无法回滚
C 部署是原子的,可通过 Deployment ID 回滚到历史不可变版本 ✓ 正确答案
D 回滚需要重新构建旧版本
#

4. git-subtree/git-submodule 在多仓托管与构建的工程取舍

A subtree 无法向子仓库推送
B 两者在克隆时完全一样
C submodule 会把代码复制进父仓库历史
D submodule 记录子仓库提交引用,subtree 把子仓库代码合并进父仓库 ✓ 正确答案
#

5. https://{pr-N}.preview.example.com 在 review app 的工程价值

A 每个 PR 生成独立预览环境,便于合并前测试与协作 ✓ 正确答案
B 预览环境会覆盖生产环境
C 一个 PR 只能共享一个预览地址
D 预览环境无法结合 CI 测试
#

6. S3 版本管理如何用于前端静态资源的历史回溯与回滚,版本清理策略如何制定?

A 启用版本管理后每个版本都永久保留,无需清理
B 版本管理无法回滚
C 版本管理支持历史回溯与回滚,并用生命周期策略按规则清理历史版本以控成本 ✓ 正确答案
D 清理策略与成本无关
#

7. 灰度发布中静态资源版本与 HTML 版本不一致导致白屏/404 的成因(旧 HTML 引新资源、新 HTML 引已删旧资源)与对策(资源多版本共存、HTML 不缓存)

A 发布时应立即删除旧资源以节省空间
B HTML 应长期缓存
C 保留多版本资源共存 + HTML 不缓存,可避免旧 HTML 引新资源或新 HTML 引已删资源导致的 404/白屏 ✓ 正确答案
D 资源版本与 HTML 无关
#

8. Dockerfile 与 nginx:alpine 静态文件托管在传统 VM 的工程价值

A 多阶段构建先构建再拷贝产物到 nginx:alpine,得到轻量一致的前端镜像 ✓ 正确答案
B 应把 node 依赖也打进运行镜像
C nginx:alpine 无法配置缓存头
D Docker 无法保证环境一致性
#

9. 阿里云 ESA/腾讯云 EdgeOne 在国内边缘托管的工程价值

A 二者只能加速静态资源
B 二者都不支持边缘计算
C 国内托管无需合规
D 二者都是集 CDN、边缘计算与安全防护于一体的国内边缘托管平台 ✓ 正确答案
#

10. Cloudflare Pages 与 Workers 的集成

A Pages 无法与 Workers 共享任何运行时
B Pages 的 Functions 基于 Workers 技术,可一体化部署静态资源与边缘函数 ✓ 正确答案
C Pages 只能托管静态文件
D Functions 与 Workers 完全无关
#

11. Netlify 的持续部署、Edge Functions、Forms

A Edge Functions 只能用于静态文件
B Netlify Forms 需要自建后端
C Netlify 不支持回滚
D Netlify Edge Functions 基于 Deno 运行时,可处理边缘逻辑 ✓ 正确答案
#

12. Vercel 的零配置部署、Edge Network 与预览部署

A Vercel 不支持预览部署
B Vercel 需要手写部署脚本
C Vercel 零配置自动识别框架,提供 Edge Network 缓存与 PR 预览部署 ✓ 正确答案
D Vercel 只能部署静态站点
#

13. WebTransport 在大型前端项目的工程价值

A WebTransport 只用于静态资源
B WebTransport 与 WebSocket 完全等价
C WebTransport 可以由所有普通服务器直接支持
D WebTransport 基于 HTTP/3/QUIC,提供低延迟的多路复用与数据报传输 ✓ 正确答案
#

14. Preview Deployments(PR 预览环境)在前端协作的工程价值

A 所有 PR 共享同一个预览地址
B 预览部署会覆盖生产
C 预览环境无法与 CI 集成
D 每个 PR 生成独立预览 URL,便于评审与测试,PR 关闭后清理 ✓ 正确答案
#

15. 蓝绿部署(Blue-Green)/灰度发布/金丝雀在现代托管平台(Vercel/Netlify)

A 现代平台不支持灰度
B 三者完全等价
C 全局发布没有回滚
D 蓝绿部署是双环境切换,灰度/金丝雀是逐渐放量,现代平台通过不可变部署与即时切换支持 ✓ 正确答案
#

16. 基于 Cookie/Header 的灰度发布与版本回滚

A 回滚必须重新构建
B 灰度分流与缓存键无关
C Header 无法用于灰度
D Cookie 提供用户级黏性,且需把 Cookie/Header 纳入 CDN 缓存键避免缓存串版本 ✓ 正确答案
#

17. 蓝绿部署(两套环境切换)与金丝雀发布(逐步流量切换)

A 二者是同一概念
B 蓝绿是两套环境整体切换,金丝雀是逐步放量控制风险 ✓ 正确答案
C 金丝雀部署需要双倍资源
D 蓝绿部署无法回滚
#

18. AWS CloudFront Origin Access Control(OAC)

A OAC 只用于静态资源
B OAC 与 OAI 完全相同
C OAC 通过 IAM 签名让 CloudFront 访问 S3,S3 策略只放行该 OAC,限制源站直连 ✓ 正确答案
D OAC 无法控制 S3 访问
#

19. AWS S3 + CloudFront 的企业级部署(优先 OAC,OAI 仅作旧方案)

A CloudFront 无法提供 HTTPS
B OAI 比 OAC 权限更细
C S3 不应启用版本管理
D 应优先用 OAC 限制源站只被 CloudFront 访问,OAI 是旧方案 ✓ 正确答案
#

20. Akamai/Cloudflare 在企业级 CDN 与 WAF 的工程取舍

A Akamai 以定制化与严格 SLA 见长,Cloudflare 以一体化、低成本与快速部署见长 ✓ 正确答案
B 两者完全相同
C Cloudflare 不提供 WAF
D Akamai 不支持 DDoS 防护
#

21. 前端多区域部署与全球化加速(CDN/边缘)的缓存与回源一致性如何保证?

A 版本化 URL 使不可变资源天然一致,动态内容用 TTL+失效+按需刷新,关键业务走强一致源站 ✓ 正确答案
B 所有内容都应无缓存
C CDN 缓存与一致性无关
D 边缘缓存无法失效
#

22. GitHub Pages 的免费静态托管

A 它只能用于私有仓库
B 它可以运行完整后端
C 它不支持自定义域名
D 它是免费的静态站点托管,适合文档与静态内容站,但无后端函数 ✓ 正确答案
#

23. A/B Testing 部署在 Vercel Edge Config 与 Cloudflare Workers 的工程价值

A 边缘 A/B 与缓存无关
B 边缘无法做 A/B 分流
C 修改实验比例必须重新构建
D 可在边缘按 Cookie/Header 分流并热更新实验配置,无需重新部署 ✓ 正确答案
#

24. Feature Flag(LaunchDarkly、Unleash、PostHog)

A 使用 Feature Flag 无需清理
B Feature Flag 会强制重新部署
C LaunchDarkly 无法实时更新
D Feature Flag 让功能无需重新部署即可开关,支持灰度、回滚与实验 ✓ 正确答案
#

25. 部署时的 DNS 解析与 CDN/源站连接复用预热对首屏的影响与预热手段

A 预热让 CDN 提前缓存、源站提前就绪,降低上线后首屏 TTFB 与回源 ✓ 正确答案
B 预热会增加首屏延迟
C DNS 解析与首屏无关
D 连接复用无法优化首屏
#

26. 原子部署(Atomic Deploys)在 Netlify、Vercel 的工程实现

A 原子部署只用于静态资源
B 新版本会逐个覆盖旧文件
C 原子部署无法回滚
D 新版本作为不可变整体一次性切换,回滚即切回历史版本,避免部分更新 ✓ 正确答案
#

27. 回滚(Rollback)策略在前端 CDN 部署的现代工程实践

A 回滚必须重新构建旧版本
B 用不可变版本 + 即时切换 + 缓存安全(hash 资源 + HTML 不缓存)实现又快又安全的回滚 ✓ 正确答案
C 回滚与缓存无关
D 回滚无法自动化
#

28. On-Demand Revalidation 在 Next.js 15 的现代应用

A 它只能按固定时间失效
B 它通过 revalidatePath/revalidateTag 在事件发生后精确失效缓存页面 ✓ 正确答案
C 它无法与 CMS 集成
D 它只用于客户端
#

29. Cloudflare Pages 在边缘部署的工程实践与现代边界

A Pages 通过 Functions 在边缘执行逻辑,但受边缘运行时约束,不适合重计算 ✓ 正确答案
B Pages 无法执行任何服务端逻辑
C Pages 只能部署到单一区域
D Pages 不支持预览或回滚
#

30. Vercel Edge Network 在全球边缘缓存与 SSR 的工程价值

A 它提供全球边缘缓存,并可在边缘执行 SSR 与流式,降低全球用户 TTFB ✓ 正确答案
B 它只能缓存静态资源
C 边缘无法执行 SSR
D 它不支持缓存失效
#

31. Netlify Edge Functions 在 Deno 部署的工程应用

A 它无法读取地理信息
B 它只能运行 Node 代码
C 它运行在 Deno 运行时,适合边缘轻量逻辑(鉴权、改写、分流) ✓ 正确答案
D 它替代所有 Node 函数
#

32. GitHub Actions 在前端 CI/CD 的工程实践与现代应用

A GitHub Actions 只能做测试
B 通过 YAML 定义工作流,结合缓存、矩阵与多事件触发实现 lint/test/build/deploy ✓ 正确答案
C 无法缓存依赖
D 无法部署到云端
#

33. Docker 多阶段构建(builder/runner)在前端镜像最小化的工程价值

A builder 阶段构建、runner 阶段只拷贝产物,得到最小运行镜像 ✓ 正确答案
B 应把 node_modules 拷贝进运行镜像
C 多阶段构建会增大镜像
D 运行镜像需要包含构建工具
#

34. Vercel 的 Edge Middleware 与 Edge Functions 的能力差异

A Middleware 在路由前做轻量拦截/改写,Edge Functions 是通用的边缘函数处理具体逻辑 ✓ 正确答案
B 二者能力完全相同
C Middleware 可以执行数据库操作
D Edge Functions 无法处理 API
#

35. SPA 路由 fallback 与 Nginx try_files

A SPA 路由与服务器无关
B try_files 会破坏所有资源访问
C API 也应 fallback 到 index.html
D try_files 先匹配真实文件,找不到回退到 /index.html,让 SPA 深链刷新可用 ✓ 正确答案
#

36. .dockerignore 与运行时配置(envsubst)

A envsubst 用于构建期硬编码
B .dockerignore 会增大镜像
C .dockerignore 优化构建上下文,envsubst 在运行时注入环境变量实现多环境复用同一镜像 ✓ 正确答案
D 每个环境必须单独构建一次
#

37. Nginx Docker 镜像的多阶段构建与瘦身

A 运行镜像应包含 node 与源码
B 用 nginx:alpine 只拷贝构建产物与最小配置,去掉构建工具与源码从而瘦身 ✓ 正确答案
C alpine 基镜像会增大体积
D 瘦身无法提高安全性
#

38. content-hash 与 Cache-Control: immutable 的协作原理与长期缓存的工程价值

A hash 资源无需缓存
B immutable 会阻止资源更新
C hash 作为内容指纹,配合 immutable + 长 max-age 实现静态资源长期缓存,内容更新靠 hash 变化 ✓ 正确答案
D 长缓存会破坏部署
#

39. HTML 入口与静态资源差异化缓存头设计,no-cache(HTML)vs immutable(hash 资源)

A HTML 也应长缓存
B HTML 用 no-cache 保证及时更新,hash 资源用 max-age+immutable 长期缓存 ✓ 正确答案
C hash 资源应用 no-cache
D 两者缓存策略相同
#

40. CDN 缓存失效(purge)与版本化 URL 的取舍,即时生效 vs 缓存命中率优化

A purge 永远优于版本化 URL
B 版本化 URL 让不可变资源高命中、无需 purge,动态内容用 purge/short TTL 保证即时生效 ✓ 正确答案
C 版本化 URL 无法更新
D purge 会提高命中率
#

41. 部署回滚时边缘缓存的一致性处理,版本化 URL 天然免疫 vs purge 延迟的工程风险

A 版本化 URL 让新旧资源并存、回滚即时一致,purge 有传播延迟存在不一致风险 ✓ 正确答案
B purge 是回滚的唯一方式
C 版本化 URL 无法回滚
D 回滚与缓存无关
#

42. index.html 引用 hash 资源在多页/微前端下的发布顺序问题与原子部署保障

A 微前端无需考虑共享资源
B 发布时应立即删除旧资源
C 发布顺序与一致性无关
D 应原子部署并保留多版本资源共存,避免新旧 HTML 引用错误的资源 ✓ 正确答案
#

43. CDN 多级缓存(边缘/中间/源站)的 TTL 阶梯设计与 stale-while-revalidate 的工程应用

A SWR 会直接返回 500
B 所有缓存 TTL 应相同
C 多级缓存用 TTL 阶梯平衡命中与新鲜度,SWR 让过期时先返回旧值并后台刷新 ✓ 正确答案
D 多级缓存与回源无关
#

44. Service Worker 预缓存(precache)版本化与 HTTP 缓存的优先级冲突与协调策略

A SW 优先于 HTTP 缓存,需用版本化 precache manifest 更新并清理旧缓存以协调 ✓ 正确答案
B HTTP 缓存优先于 SW
C SW 与 HTTP 缓存相互独立无冲突
D SW 无法更新
#

45. CircleCI 在前端测试与部署流水线的工程取舍

A CircleCI 与 GitHub Actions 完全相同
B CircleCI 只能自托管
C CircleCI 无法缓存依赖
D CircleCI 用 YAML 与 orbs 组织构建/测试/部署,可在云端或自托管 runner 间取舍 ✓ 正确答案
#

46. Jenkins 在传统前端 CI/CD 的工程价值与现代应用

A Jenkins 只能托管在云端
B Jenkins 可自托管、插件丰富,适合私有化与合规环境,但需较高维护成本 ✓ 正确答案
C Jenkins 无法自建流水线
D Jenkins 已完全被淘汰
#

47. 前端 SPA 的 CDN 缓存与 HTML 不缓存的工程实践

A 缓存策略与更新无关
B HTML 也应长缓存
C 静态资源应用 no-cache
D hash 资源长缓存、HTML 用 no-cache 保证及时更新到最新版本 ✓ 正确答案
#

48. 前端部署回滚版本保留与清理(GC)的工程策略实践

A 保留最近 N 个/天版本并支持关键版本豁免,用生命周期策略自动清理过旧版本 ✓ 正确答案
B 所有版本应永久保留
C 无需保留任何版本
D 清理策略与回滚无关
#

49. Edge Middleware 同时承担鉴权前置、地理路由和 A/B 分流时,执行顺序、实验黏性、Cookie 签名与 CDN cache key 应如何设计,才能避免未授权响应被缓存或同一用户跨实验组抖动

A 实验组无需 Cookie 签名
B 鉴权应最后执行
C 鉴权前置最先执行并设 no-store,实验用签名 Cookie 保持黏性,cache key 需区分用户/实验组 ✓ 正确答案
D cache key 与用户无关
#

50. 购物车和前端会话存入 Cloudflare KV 或 Deno KV 后,最终一致性会造成哪些 read-after-write 与跨 PoP 覆盖问题

A KV 不会覆盖并发写
B KV 是强一致的
C KV 写入立即全局可见
D KV 是最终一致且 last-write-wins,会造成 read-after-write 与跨 PoP 覆盖,购物车应改用强一致存储 ✓ 正确答案
#

51. 多团队协作下的部署窗口与锁机制(并发部署冲突、产物覆盖、发布审批流)

A 并发部署无需处理
B 用部署锁串行化部署、环境隔离防覆盖、审批流控制生产发布 ✓ 正确答案
C 产物覆盖无关紧要
D 生产发布无需审批
#

52. Source Map 部署到 Sentry/LogRocket 的安全与协作

A Source Map 与源码无关
B Source Map 应公开部署到生产静态目录
C Source Map 应私密上传到监控平台并关联版本,避免公开泄露源码 ✓ 正确答案
D Source Map 无需鉴权
#

53. 边缘函数(Edge Functions)与 Serverless 的取舍

A Serverless 延迟总比 Edge 低
B Edge 能力最全
C Edge 延迟低但运行时受限,Serverless 能力全但较远,按逻辑复杂度与延迟需求选择 ✓ 正确答案
D 二者完全相同
#

54. 多环境(dev/staging/prod)变量注入

A 所有变量都应进客户端
B 用 .env 文件按环境构建注入,私有密钥仅存服务端/CI,绝不进客户端 bundle ✓ 正确答案
C 密钥可写进前端代码
D 环境变量与构建无关
#

55. 资源 hash 变更的细粒度控制,代码分割后仅变更受影响 chunk 的 content-hash 策略

A hash 与内容无关
B 任何改动都会改变所有 chunk 的 hash
C 无需代码分割
D 通过稳定命名与合理分包(vendor/路由/公共依赖)让改动只影响受影响 chunk,最大化缓存命中 ✓ 正确答案