遊戲和刺客的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,並控制命中率--所以大堂立即打開,遊戲在沒有停頓的情況下開始,起源保持寒冷和廉價。
