技术和基础架构→ CDN网络和内容积压
CDN网络和内容积压
1)为什么CDN和kesh
CDN(内容交付网络)减少RTT和TTFB,卸载起源并稳定P95/P99尾巴。对于iGaming/fintech,这些是:- 目录,asset,促销和媒体的快速第一个字节。
- 峰值稳定性(锦标赛/活动)没有爆炸性的起源能力增长。
- 节省egress和可预测的成本。
- 地理控制(监管,内容许可)。
2)基本腰包策略
2.1回复,可以加关
静态:JS/CSS/字体/图标是名称中的长 TTL(30-365天)+文件哈希。
半流派:游戏目录,横幅,配音-TTL从分钟到小时+"stale-while-revalidate"。
API GET/HEAD:参考书,引导,领导板-具有正确密钥的短TTL(5-120秒)。
2.2个标题
`Cache-Control: public, max-age=600, stale-while-revalidate=300, stale-if-error=600`
"ETag"/"Last-Modified"用于条件查询(revalidation)。
"Surrogate-Control"/"CDN-Cache-Control"(如果提供商支持)。
对于私有数据:"Cache-Control: no-store"(而不仅仅是"no-cache")。
2.3 kesha键(cache key)
基本:方法+URL路径+查询参数,影响响应。
添加:"Accept-Encoding" (gzip/br), "Accept" (json/webp/avif), local("Accept-Language"),区域/货币,如果影响内容。
避免进入随机标题(cookies, trace ids)的密钥。
3) Vary和Cookie管理
"Vary:Accept-Encoding,Accept,Accept-Language"是最低要求的设置。
在CDN上为Cashed Way脱衣舞Cookie:我们除了whitelisted之外的所有东西(请参见AB标志)。
将会话ID迁移到可加权内容之外的子域/路径。
4)TTL模式和新鲜度
可变静态:"Cache-Control: public, max-age=31536000, immutable"+版本在文件名中。
SWRO/SIE:"stale-wile-revalidate"和"stale-if-error"-对起源问题的UX抗性。
Partitioned TTL:游戏根列表-30-60秒;游戏卡-5-10分钟;横幅-30分钟。
API混合:基本参考书-5-30分钟;货币/限额为1-5分钟;领导者― 2-15秒。
5) Tiered caching и origin shield
Tiered/Regional caches:经过边缘的查询被打成区域"shield"而不是起源。
优点:起源的MISS较少,"风暴"平滑,价格便宜。
盾牌按交通密度最高的地理(欧盟,TR,BR,LATAM)分组。
6)残疾和加热
Purge by path/prefix/tag:标签方便批量清理(目录发布、促销活动)。
Soft purge (grace):标记内容已过时,但在新内容到来之前我们会放弃。
加热(prewarm):发布/比赛前的场景:调查流行路径、生成精灵和图片变化。
金丝雀残疾:部分清洁,验证度量/错误,然后扩展。
7)边缘规则和功能(工人/功能)
重写答桉:添加腰果标题,规范化"Vary",脱衣舞cookie。
Geo/ASN路由:重新定向,本地化/货币在全国范围内。
受保护的媒体/对象的签名URL (Signed URLs/Headers)。
Edge-AB测试:轻量级,不增加起源负载(仅用于静态/半静态)。
Edge compute:轻型小部件/个性化渲染,但不热支付路径。
8)图像和视频
8.1张图片
自动转换:WebP/AVIF在"接受"客户机;"Vary:接受"。
重新调整边缘:"w/h/fit/quality"选项;准备预期(卡片、横幅、预览)。
精灵和SVG优化,前端懒惰装载。
8.2个视频/流
短段(2-4秒)的HLS/DASH,重叠播放列表。
Preload最近的片段和"stale-if-error"。
对于实时投注-将细分市场保持在区域盾牌中以减少TTFB。
9)通过CDN的API
Cashable GET:添加"Cache-Control"和正确的密钥(地方/货币/区域)。
"ETag"/"If-None-Match"降低字节和TTFB。
POST/PUT:不打结;POST响应只能在显式规则和等效语义(很少有理由)下进行。
边缘的等级限制/WAF:通过切断机器人/异常来减少尾巴。
10)安全,访问和合规性
mTLS к origin и IP allow-list.
WAF/机器人管理:签名,行为启发式方法,对奖金扫描仪的保护。
Signed URL/Headers用于媒体和私人下载。
GDPR/PII/PCI:不加压敏感数据;带有个人回复的API是"无商店"。
根据市场监管机构的要求,Geo过滤器/锁定处于边缘。
11)网络和协议
在CDN、TLS恢复和OCSP上启用HTTP/2/3。
文本格式的Brotli(br),gzip是后退。
TCP/QUIC调音(由提供商提供)的损失影响→小,尤其是在移动网络上。
12) CDN的可观察性和SLO
度量(边缘和盾牌):- Hit Ratio(超前缀和前缀),Origin Offload。
- TTFB P50/P95/P99 按地区/ASN分列。
- Throughput/Errors按状态代码(edge/origin)。
- Purge latency(残疾交付时间)。
- Image transform latency(如果在边缘使用重新分配)。
- 游戏目录:TTFB P95 ≤ 150毫秒,Offload ≥ 85%。
- 媒体(图像):Hit Ratio ≥ 90%,转换错误<0。1%.
- API GET"参考":TTFB P95 ≤ 200毫秒,Revalidation Hit ≥ 60%。
13)FinOps: 腰果成本
Offload=较小的egress与起源→直接$-vygod。
Tiered+shield切断"风暴"和MISS负载。
图像优化(AVIF/WebP/resize)可以最大程度地节省流量。
控制响应权重P95和"昂贵的MISS"(字节× ×区域)。
14)Configa和规则(片段)
14.1个起源(Nginx)标题)
nginx статика с версионированием location ~ \.(css js woff2)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
полустатика каталога location /catalog/ {
add_header Cache-Control "public, max-age=300, stale-while-revalidate=600, stale-if-error=600";
add_header Vary "Accept, Accept-Language";
}
14.2边缘密钥正常化(伪)
js addRule((req) => {
// очищаем шум req.cookies.clearExcept(['ab', 'locale']);
// ключ = method+path+критичные query key = `${req.method}:${req.path}?lang=${q.lang}¤cy=${q.cur}`;
req.setCacheKey(key);
req.setVary(['Accept', 'Accept-Encoding', 'Accept-Language']);
});
14.3 Signed URL(想法)
/media/{path}?exp=1735707600&sig=HMAC_SHA256(secret, path exp ip)
На edge: проверка exp и подписи, опционально привязка к IP/ASN.
15)发布和操作过程
Release hooks:降级后按标签/前缀自动购买。
Prewarm清单:交通/转换的顶级途径-提前加热。
TTL矩阵目录:与产品/营销一致。
事件:随着MISS/TTFB的兴起-包括stale-if-error,在起源稳定之前"移除"边缘的昂贵转换。
16)实施支票
1.内容卡(静态/半静态/API)和TTL矩阵。
2.正确的"Cache-Control","ETag/最后修改","Vary"。
3.没有"噪音"的kesha钥匙,cookie脱衣舞,whitelists。
4.Tiered caching+origin shield按地区。
5.按标记/前缀,软标记,prewarm例程。
6.边缘功能:归一化、地理逻辑、签名URL。
7.图像优化(WebP/AVIF/resize),视频的HLS段。
8.WAF/机器人过滤器,地理限制,mTLS到起源。
9.SLO-dashbords: TTFB, Hit Ratio, Offload,转换错误。
10.FinOps报告:$/GB,昂贵的MISS,egress领导地区。
17)反模式
"no-cache"无处不在"以防万一"。
Kesha键包括所有查询/标题→零命中率。
静态的Cookie依赖性响应(完全打破kesh)。
每次发布时清除整个CDN。
在峰值期间对边缘进行长时间的同步转换。
缺乏"stale-wile-revalidate"/"stale-if-error"是UX的急剧降解。
在没有"无商店"的情况下累积个人数据/回复。
18) iGaming/fintech上下文: 实用音符
锦标赛/活动:排名第一的简短TTL(2-10秒)+SWR;游戏卡和横幅的prewarm。
地理许可:边缘锁定/重定向国家/地区,货币/本地在腰果键。
促销和优惠券:我们缓存横幅/条款,但不包含个人限制。
负责任的游戏:政策/限制页面-具有SWR的半静态;个人数据-只有"无商店"。
PSP/KYC webhooks:不通过CDN,或者通过没有腰果和僵硬的taymout的边缘通行证。
结果
强大的CDN策略是正确的标题和腰果键,用于降低MISS的针脚/盾牌,用于正常化和保护的边缘功能,用于快速发布的残疾/加热以及SLO和FinOps的可观察性。通过遵守这些原则,您将获得快速且经济高效的外围,可以承受峰值,并使用户和合作伙伴的TTFB可预测。