
CDN的核心是把流量从中心化的源站迁移到遍布全球的边缘节点(Edge),通过DNS/Anycast或智能调度把用户请求路由到最近节点,从而降低延迟并减轻源站压力。
配置回源时要明确回源类型:主动推送(push)或按需拉取(pull)。常见做法是使用按需拉取并配合Origin Shield或中间层缓存减少回源频次。
1) 在CDN控制台配置源站域名/IP,并设置回源协议(HTTP/HTTPS)。
2) 配置回源头(Host/Origin-Host)、回源端口、超时与重试策略。
3) 使用源站鉴权、IP白名单与数据回源加密,保护源站安全。
回源头设置为原始域名,开启HTTPS回源,Timeout=10s,Retries=2;并在边缘启用Origin Shield减少回源热点。
负载均衡分为DNS层(基于地理/权重)、第4层(TCP/UDP)与第7层(HTTP/HTTPS)。选择策略取决于应用特性与会话粘性需求。
1) 对静态资源优先使用CDN边缘缓存,避免穿透到负载均衡层;对动态请求使用L7负载均衡(例如Nginx/HAProxy/LVS+Keepalived)。
2) 配置健康检查(HTTP 200/302)、权重与故障转移,结合自动伸缩(Auto Scaling)实现高可用。
需要会话粘性时用Cookie或IP Hash;对于缓存友好型请求建议使用一致性哈希(Consistent Hashing)减小缓存抖动。
避免在L7层做过多复杂路由导致延迟,尽量把路由逻辑下沉到边缘或专用网关。
回源优化的目标是提高缓存命中率并减少不必要的回源请求,从而降低源站负载与延迟。
1) 合理设置Cache-Control、Expires、ETag与Last-Modified,使用stale-while-revalidate和stale-if-error减少对源站的同步回源。
2) 使用Origin Shield或中继节点(regional caching)作为第二级缓存,集中回源请求。
启用Keep-Alive、HTTP/2或HTTP/3(QUIC)回源可以减少握手延迟;启用gzip/Brotli压缩减小带宽。
采用If-Modified-Since/ETag进行条件请求,源站返回304可显著降低回源流量。
缓存策略设计要兼顾命中率与数据一致性,缓存键(Cache Key)决定了哪些请求能命中同一缓存。
1) 对静态资源使用URL(包含路径与文件名)作为缓存键,忽略无关查询参数。
2) 对有针对性的查询参数(例如版本v=1.2)纳入缓存键,对广告/跟踪参数剔除。
尽量在CDN层剥离或正则化Cookie和不必要的Header,只有影响响应的Header(如Accept-Encoding、User-Agent特定变体)才纳入缓存键。
使用URL版本化(例如/static/app.v123.js)比频繁清除缓存更可靠;同时配合分区/路径级别的过期策略和灰度清除(soft purge)。
有效的监控是保障CDN与回源稳定性的关键。核心指标包括缓存命中率、边缘延迟、回源带宽、5xx比例与健康检查状态。
1) Edge Cache Hit Ratio(按域名、路径细分)。
2) Origin Bandwidth & Requests(用于发现回源暴增)。
3) 5xx/4xx 错误率、边缘与源站延迟分位数(p50/p95/p99)。
查看边缘访问日志(请求头/query/cookie)、源站访问日志和健康检查日志。若回源激增,先检查Cache-Control/Set-Cookie/Query乱用或是否被频繁Purge。
1) 命中率低:检查请求是否携带随机参数或大范围的Cookie;
2) 回源延迟高:检查源站CPU、连接数、Keep-Alive设置及数据库响应;
3) HTTPS握手慢:查看TLS版本与证书链、启用OCSP Stapling与Session Resumption。