游戏和刺客的CDN:TTFB在全球范围内下降
1)什么是"快速"的iGaming和我们赢得的地方
关键的UX点:- 游说和媒体(游戏图标,预览,横幅)是即时渲染;
- 启动插槽/Live Table-重定向和装载的最小值;
- Fids/List(游戏目录,规则,翻译)是廉价的可缓存JSON;
- 视频/广播(预告片,流媒体的HLS/DASH);
- 静态前端引用(JS/CSS/字体)。
- 全球TTFB:每静态≤ 150-250毫秒,每张动态≤ 300-400毫秒,悬浮在边缘上;
- 时间到第一旋转(TTFS):向提供商的第一个请求≤ 800毫秒(在大厅渲染之后);
- p95图标下载:≤ 200毫秒。
2)CDN层体系结构: 性能的"派"
1.世界各地的Anycast PoP:最近的站点的自动阻止,RTT的减少。
2.Tiered cache+Origin Shield:PoP →区域缓存→ origin之前的1-2 shield节点,以扑灭"失误风暴"。
3.多重起源:资产或资产充值(EU/US/APAC),健康检查和智能路由。
4.边缘功能:轻逻辑到起源(A/B,地理,签名,URL/标题归一化)。
5.私人后座CDN:在遥远的地区绕过"野生"互联网核心。
3)缓存策略: 什么,在哪里以及多少
原理是:在可能的情况下,动力学的TTL短,爆发下的SWR(stale-wile-revalidate),确定性键。
TTL矩阵(示例):重要:对于您正在缓存的API-GET,请使用Surrogate-Control(用于CDN)和简短的"Cache-Control"(用于浏览器),以确保浏览器不会停滞。
4)高速缓存标题和密钥: 尽量减少失误
缓存键="scheme+host+path+归一化的query+变体"。
规范化查询参数的顺序,抛出"垃圾"('utm_'、'fbclid'等)。
标题中的变体:"接受编码"(Brotli/Zstd/Gzip),"接受"(AVIF/WebP/JPEG),"DPR"(客户端),"接受语言"。
标题参考(对于不可磨灭的assets):
Cache-Control: public, max-age=31536000, immutable
ETag: "sha256-<hash>"
Content-Encoding: br#和/或zstd/gzip,请参见下文
Vary: Accept-Encoding, Accept, DPR, Save-Data
Cache-Control: public, max-age=60, stale-while-revalidate=300
Surrogate-Control: max-age=300, stale-while-revalidate=6005)压缩和格式: 少字节-低于TTFB
HTTP/3+QUIC降低了手摇潜伏期,可抵抗数据包丢失。
文本摘要(JS/CSS/JSON)的Brotli,5-7级(CPU/收益平衡)。
JSON/NDJSON的Zstd(如果支持CDN)是出色的低延迟压缩。
用于图像的WebP/AVIF(通过"接受"的自动执行器)。
用于视频/大型文件的范围查询,以免拉动一切。
6)通过边缘交付: 预告片和"智能"大厅
大厅的预告:一旦游戏卡在可见区域-装上图标,规则,小的"maniest"提供商。
Early Hints(103)和CDN主机的"preconnect"。
Edge功能-加热:在事件中"将游戏放在首位"-在最近的PoP促销市场上加热顶级图标和configs。
Adaptive payload:将轻量级列表(10-20游戏)放置在3G/Save-Data移动上。
7)起源盾牌和"风暴失误"保护"
启用deduplicated fetch:在数百次并行失误(coalescing)时单程前往起源。
Jitter TTL(± 20%)用于大量密钥的"同时"到期。
金丝雀发布:将新目录/规则发布到5-10%的边缘流量,直至全球残疾人。
Negative-cache(非常短,1-5 s)在"404/204"上进行比赛,然后才开始,不要"打败"起源。
8)地理限制,许可证和安全
对非许可证国家/地区进行边缘地理注射-快速和中立响应(403)。
私人内容的URL/kokiki签名(VIP材料,奖励资源)。
Hotlink和转介保护,PoP上用于缓存的API-GET的WAF规则(有效性JSON电路,IP/ASN限制)。
TLS 1.3,HSTS,OCSP stapling在CDN前域。
9)转化和残疾
文件名中的Content-hash: 'app.
JSON/目录/横幅:事件残疾(来自CMS/adminka的webhook)+自动加热顶级密钥。
避免全局陷阱;通过前缀/标签进行点拼写。
10)视频和流: CDN上的HLS/DASH
支持的短片段(2-4 s)+'#EXT-X-PREFETCH '/Low-Latency HLS。
介于PoP之间的Tiered cache; 'Cache-Control: public, max-age=3600'。
Per区域播放列表(比特率变体)和本地字幕;Range-friendly.
11)游戏提供商的细节
提供程序元数据(列表,限制,位置)是带有"SWR"的缓存JSON。
图标和促销媒体提供商是其CDN域上的重播(以免遭受缓慢的起源)。
CDN域池(但不需要domain-sharding-HTTP/2/3不需要)-共享大型视频/静态/API以隔离策略。
12)示例规则(伪,边缘功能)
js export default async (req) => {
//req密钥标准化。url = normalizeQuery(req.url, ['lang'、'dpr'、'v']);//垃圾排放
// Geofencing if (!isLicensed(req.geo.country)) return geoBlock();
//Signed URL for private if前缀(req.path.startsWith('/vip/')) verifySignatureOr403(req);
//if策略缓存(req。path.match(/\.(js    css    woff2)$/) && hasHash(req.path)) {
setHeader('Cache-Control','public, max-age=31536000, immutable');
} else if (req.path.endsWith('/games.json')) {
setHeader('Cache-Control','public, max-age=60, stale-while-revalidate=300');
setHeader('Surrogate-Control','max-age=300, stale-while-revalidate=600');
}
/negotiateEncoding压缩程序(['br', 'zstd', 'gzip]);
return fetchFromCacheThenOrigin(req);
}13) CDN和SLO可观察性
RUM:按区域/网络收集"TTFB","LCP","first paint"(移动vs Wi-Fi)。
边缘指标:命中/错误,盾牌命中率,前缀失误,出站流量量,"4xx/5xx"代码。
Alerta:命中率下降、TTFB在该地区的增长、"错过风暴"、"429"/bot-ASN激增。
预告片:"ed → ge sh → ield origin"标记,以查看"燃烧"的位置。
14)费用: 如何不多付
缓存重型和热型(图标/视频/目录)-从起源中降低egress。
减少密钥的基数(删除垃圾查询/UA变异)。
Tiered cache和区域盾牌节点节省了后端请求。
压缩(Brotli/Zstd)减少了流量;AVIF/WebP是用于图片的刷卡。
15)生产准备工作清单
- 具有目标市场(欧盟,LatAm,MENA,APAC)覆盖范围的Anycast CDN;包括HTTP/3。
- 带有内容哈希的不朽assets; "Cache-Control: max-age=1y, immutable"。
- 目录/JSON-SWR+Surrogate-Control,TTL 30-300 s,CMS的点残障。
[] Tiered cache + Origin Shield, coalescing, TTL-jitter.- 格式:AVIF/WebP, Brotli/Zstd,视频范围。
- Edge Feature: query归一化、地理过滤器签名URL, A/B。
- PoP上的地理限制和WAF;仅HTTPS(HSTS),TLS 1。3.
- 可观察性:RUM TTFB/LCP,高度,区域Alerta。
- promo/stream之前的预热程序,金丝雀布局。
- 高速缓存密钥文档、残疾策略和"错过风暴"运行手册。
二.总结
要在全球范围内真正降低TTFB,请使用Anycast+tiered cache+origin shield,为所有可转换产品提供可移动性,将SWR应用于动态列表,切断字节(Brotli/Zstd,AVIF/WebP),并在edge上规范密钥,添加地理信息过滤器和签名。在促销之前热身顶级游戏,通过RUM衡量TTFB/LCP,并控制命中率--所以大堂立即打开,游戏在没有停顿的情况下开始,起源保持寒冷和廉价。
