工作原理
CDN 通过 DNS 或 anycast 把请求路由到附近节点,再用主机、路径、查询字符串和选定请求头构造缓存键。未命中时向源站获取,按 Cache-Control 存储,过期后用 ETag 重新验证。边缘还会终止 TLS、压缩并运行有限计算。
Cache-Control: public, max-age=31536000, immutable # hashed asset
Cache-Control: public, max-age=60, stale-while-revalidate=30
Cache-Control: private, no-store # account page
使用场景与取舍
静态资源、媒体、公开 API 读请求和跨洲用户适合使用 CDN。它能吸收流量尖峰并缩短网络路径。与单源站加负载均衡相比,CDN 增加地理分布和缓存,也多了一层需要理解和观测的状态。
命中率越高内容越可能陈旧,TTL 越短源站压力越大。清除缓存通常有速率限制,需要数秒到数分钟且未必即时到达所有节点。个性化响应应使用 private 或 no-store 并谨慎处理 Vary。排障需要缓存状态头和源站日志,边缘与回源计费也因供应商而异。
具体示例
团队为带哈希的 app.9f2c.js 设置一年 immutable TTL,浏览器和边缘不再验证;每次发布按缓存标签清除 HTML 入口。若 API 规则误缓存 JSON 一小时,就会暴露认证响应必须使用 private 的问题,也说明清除演练的重要性。