SWE / SRE / Frontend · System Design / 基础

TikTok CDN:边缘缓存、回源与失效

解释静态资源分发,设计 cache key、TTL、版本与故障时的回源保护。

题目重点:解释静态资源分发,设计 cache key、TTL、版本与故障时的回源保护。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 公共静态资源与个人化/权限内容分开;CDN是否缓存由配置和响应合同决定。

解题路线

  1. 请求经边缘节点命中缓存或回源,距离缩短和连接复用可能降延迟,但缓存不正确会扩散错误。
  2. cache key包含影响表示的维度,例如路径、必要query和编码;不能将每个无意义参数都分裂key,也不能忽略用户权限导致共享缓存泄漏。
  3. 静态asset用内容hash版本,长TTL并保留旧版本;HTML/接口按更新与一致性需求设策略。purge传播不应被当作瞬时全球原子操作。
  4. 缓存miss风暴要请求合并、限回源与合适stale策略;故障时是否允许旧内容按资源风险选择。
  5. 验证hitratio、回源流量、错误、分地域P95和内容版本,不只看总带宽下降。

手动走一遍

app.abcd.js内容hash更新到app.efgh.js,旧页面仍能加载旧资源;立即删除旧asset会让在途用户失败。个人余额接口不能因“GET可缓存”就公共缓存;认证与响应缓存合同必须明确。

规模与取舍

源站流量约请求量×miss率,但热点失效会短时放大;边缘储存/回源与地域分布影响成本。

易错点与追问

容易失分的边界

  • CDN只要开就安全缓存所有GET。
  • purge瞬时全球一致。
  • 大TTL不保留旧asset。

继续深挖

  • 动态内容怎样谨慎用边缘缓存?
  • 防回源雪崩有哪些取舍?
✓已复制微信号!