标准答案

  1. 浏览器和 CDN 适合静态资源、公开页面和可版本化内容,使用 Cache-Control、ETag、版本文件名和明确失效策略。
  2. 本地缓存适合极热且允许短时陈旧的数据,需要设置容量、TTL 和跨实例失效机制。
  3. 分布式缓存适合共享的读多写少数据,应围绕数据库或主数据源的提交结果进行删除、更新或事件通知。
  4. 任何一层都不能成为不清楚的第二事实来源;写入、失效、回源和兜底路径要能被观测。

题目解析

缓存层越多,命中率和延迟越好,但一致性窗口、调试难度和失效成本也越高。对价格、权限和库存等敏感数据,需要更短 TTL 或绕过共享缓存。

缓存失效不是一次 API 调用那么简单。CDN、实例内存和客户端可能各自保留旧值,设计时要说清可接受的陈旧上限。

常见误区

  • 把用户私有数据放进共享 CDN 缓存。
  • 更新数据库后忘记本地缓存和 CDN 的失效路径。
  • 本地缓存无容量限制,长期运行后变成内存泄漏。

作者信息