1.
概述与目标
1) 目标:在保证实时更新与用户体验前提下,最大化减小源站带宽并降低首包/跳转延迟。
2) 场景:H5 游戏大量静态资源(图片、音频、sprite、JS、WASM)与少量动态接口共同构成。
3) 指标:关注缓存命中率、origin 流量、首字节时间(TTFB)和平均加载时延。
4) 典型基线:无 CDN 的情况下,100k 日活用户、每用户平均下载 2MB 静态资源 -> 日流量 ≈ 200GB。
5) 要点:按资源类型分层缓存策略、合理设置 Cache-Control、配合版本化与回源策略。
2.
常见 CDN 缓存策略与含义
1) Cache-Control: public, max-age= 指定边缘缓存 TTL(例如 max-age=86400 表示 24 小时)。
2) Expires: 过期时间,用于老客户端兼容,但以 Cache-Control 为准。
3) ETag/Last-Modified: 用于协商缓存,命中时仍会回源校验(增加回源请求)。
4) stale-while-revalidate/stale-if-error: 允许边缘在回源时返回旧内容,减少回源等待或因回源错误导致失败。
5) 忽略查询字符串 vs 使用查询字符串:静态资源建议忽略或通过版本号(如 ?v=202608)进行区分,避免缓存碎片化。
3.
为 H5 游戏划分缓存策略(分层与示例 TTL)
1) 大图/背景图/图集:长缓存(max-age=31536000,资源名带版本 hash),CDN edge 优先命中。
2) 小图标/通用素材:中长缓存(max-age=86400 到 604800),便于频繁复用且可日更。
3) 游戏逻辑脚本(主 bundle):采用版本化后长缓存(hash 文件名,max-age=31536000),更新时切换文件名。
4) 配置/活动数据:短缓存或不缓存(max-age=60 到 300),配合 Cache-Control: no-cache 或 stale-while-revalidate=30。
5) 接口/API:通常不走 CDN 缓存或使用边缘缓存并设置缓存键与认证白名单,动态接口通过 CDN 限速与 WAF 保护。
4.
服务器/VPS 与 Nginx 配置示例(真实配置示例)
1) 示例 VPS:4 vCPU / 8GB RAM / 带宽 200Mbps(峰值) / 数据盘 100GB SSD,节点部署在上海机房。
2) 推荐 Origin 带宽规划:峰值并发下载估算 200Mbps 可支撑 ~1000 并发小文件传输,CDN 能显著削峰。
3) Nginx 头部示例(简化):
location ~* \.(js|css|png|jpg|jpeg|gif|webp|wasm)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
gzip on; gzip_types text/css application/javascript application/json;
expires 30d;
}
4) 对于可更新资源(配置/活动):
location /cfg/ {
add_header Cache-Control "public, max-age=60, stale-while-revalidate=30, stale-if-error=86400";
proxy_pass http://backend;
}
5) 建议启用:HTTP/2 或 HTTP/3、Brotli 压缩、边缘缓存预热与目录索引打包;并配合域名别名(CNAME)与证书管理。
5.
真实案例与数据对比(含表格)
1) 案例:某 H5 休闲游戏上线 CDN 前后对比(日活 100k)。
2) 无 CDN:静态总请求约 12M 次/日,静态流量 200GB/日,origin 出站 200GB,平均 TTFB 400ms。
3) 使用 CDN(边缘缓存率 90%):静态请求 12M 次/日,origin 出站 20GB/日(10%),平均 TTFB 80ms。
4) 带宽减少与延迟下降显著,origin 降低 90% 流量,用户加载时间减少 320ms。
5) 下表展示关键对比(单位:GB / ms):
| 项 | 无 CDN | 使用 CDN | 变化 |
| 日静态流量 | 200 GB | 20 GB | -90% |
| 日请求数 | 12,000,000 | 12,000,000 | 命中率提高 |
| 平均 TTFB | 400 ms | 80 ms | -320 ms |
| Origin 出站峰值 | 250 Mbps | 30 Mbps | -88% |
6.
DDoS、防护与运维建议
1) CDN 能显著降低 origin 暴露面和出站带宽,作为首道防线阻挡大流量攻击。
2) 配合 WAF、速率限制、IP 黑名单与行为分析,保护 API 与登录接口。
3) 针对缓存策略防止缓存穿透:对常见路径设置合理默认响应、开启缓存键白名单并限制回源频率。
4) 指标与告警:监控 cache hit ratio、origin bandwidth、4xx/5xx 率与回源延迟,触发告警并自动切换流量到备源。
5) 灾备与灰度发布:采用多机房、多 CDN 提供商 + 版本化发布(hash 文件名)保证紧急回滚与零停服更新。