1. 概述与目标
目标:验证通过 CDN 上线的 H5 游戏资源在性能(加载、带宽、并发)与安全(防盗链、HTTPS、WAF)上满足生产要求。小分段:准备环境(源站、CDN 控制台、测试机)→确定指标(TTFB、首次可交互、错误率、带宽利用率、攻击防护)→制定回滚方案。
2. 部署前的源站与资源优化
步骤一:源站开启gzip/br(Nginx 示例:gzip on; gzip_types text/css application/javascript; brotli on;)。步骤二:设置合理 Cache-Control(静态资源 max-age=31536000,版本化 URL)。步骤三:合并/压缩资源、用 sprite、延迟加载非首屏资源。小分段:检查 MIME、目录权限、跨域(CORS)头。
3. CDN 配置项逐项确认
登录 CDN 控制台,逐项确认:源站域名、回源协议(HTTPS)、缓存规则、文件后缀识别、路由规则、边缘脚本/自定义 header。小分段:启用 HTTP/2 或 HTTP/3、开启 TLS 1.2/1.3、配置自定义证书或使用 CDN 证书、激活日志上报。
4. 缓存策略与热更机制测试
步骤:上线前设置短 TTL 并测试回源;上线后逐步放宽 TTL。小分段:用 curl 测试响应头(curl -I https://cdn.example.com/game.js),检查 x-cache、age、cache-control。版本热更:使用 query string 或路径版本号并测试 purge API(curl -X POST https://api.cdn/purge -d '{"path":"..."}')。
5. 性能基线测试(功能与单点)
步骤:先用 Lighthouse 或 WebPageTest 做一次基线采样;记录 FCP、LCP、TTI、SpeedIndex。小分段:用 curl --resolve 指向边缘 IP 验证 DNS 路由;用 wget/curl 大文件下载测试带宽与稳定性。
6. 并发与压力测试(真实场景)
工具与命令:wrk -t12 -c400 -d60s https://cdn.example.com/asset.bundle.js 或 k6 脚本模拟用户行为。小分段:分三轮(低并发→中并发→峰值并发),监控 95/99 响应时间、失败率与边缘流量。避免直接轰击源站,使用 CDN 边缘 IP 或流量镜像。
7. 网络层与协议测试
检查 TLS:openssl s_client -servername cdn.example.com -connect cdn.example.com:443,校验证书链与 ALPN(是否支持 h2,h3)。小分段:测试 HTTP/2 并发多路复用、测试 QUIC/HTTP3(浏览器 Network 或 h3 测试工具)。
8. 安全检测:防盗链与签名 URL
实现方式:启用 CDN 的防盗链(Referer 白名单)或使用带过期时间的签名 URL。测试步骤:生成签名 URL,然后用 curl 测试合法/过期/伪造签名;检查 CDN 日志是否记录拒绝原因。小分段:同时验证跨域资源共享(CORS)策略不会被破坏。
9. 安全检测:WAF、速率限制与头部防护
步骤:开启 WAF 规则(SQLi/XSS)与速率限制(每 IP qps),并进行攻击测试:使用 OWASP ZAP、sqlmap、简单的异常请求模拟。小分段:检查响应码、WAF 日志、是否触发 captcha 或 403;验证安全头部(Content-Security-Policy、X-Frame-Options、Strict-Transport-Security)。
10. 监控、告警与日志验证
配置点:边缘访问日志、实时监控(吞吐、错误率、延迟)、合并 CDN 与源站日志到 ELK/Prometheus。小分段:写 Synthetic 脚本每天检测首页加载并告警;设置阈值(99P 响应时间、错误率 0.5%)并演练告警流程与自动化回滚。
11. 常见问题定位与命令集合
快速定位命令:curl -I 检查缓存头;curl -v 检查重定向与 TLS;dig +short cdn.example.com 检查解析;wrk/k6 做压力。小分段:排查思路:是 DNS、边缘、还是回源?看 x-cache(MISS/HIT)、边缘日志和回源响应。
12. 上线前灰度与回滚策略
建议:启用小流量灰度(按地区/按权重),观察 24-72 小时指标,随后全量切换。小分段:准备回滚脚本(切回原 DNS、停用 CDN 路由、清理缓存),并在变更窗口内保留旧版本 7 天。
13. Q&A — CDN 部署后如何确认资源都在边缘命中?
问:如何确认 H5 资源确实在 CDN 边缘被命中而不是频繁回源? 答:使用 curl -I 看响应头的 x-cache/x-cache-status 与 age 字段,边缘命中会显示 HIT 与 age>0;再结合 CDN 控制台的边缘命中率报告与边缘访问日志统计做二次验证。
14. Q&A — 遇到 HTTPS 证书错误怎么办?
问:上线后有用户报 TLS/证书问题,怎么快速排查并修复? 答:先用 openssl s_client 检查证书链与过期时间,确认 CDN 是否配置了正确证书或自动证书(Let's Encrypt);若证书错误,立即在控制台替换证书或切回平台证书,并通过 CDN 清缓存或等待证书生效。
15. Q&A — 如何在 CI 中自动化性能与安全检测?
问:能否把这些检测流程并入 CI/CD,怎么做? 答:把关键检查写成脚本并在发布流水线中运行:Lighthouse/k6 用以性能阈值断言,curl/openssl 检查头与证书,安全扫描用 ZAP 或 Trivy;失败则阻断发布并触发回滚或人工确认。