把一个生产域名从旧应用逐步切到重写版,首先需要明确缓存与路由的边界。
分流必须发生在缓存之前
每一层缓存都需要回答一个问题:
当前缓存键是否包含了真正决定内容版本的信息?
下面是一段示例代码:
def select_origin(bucket: int) -> str:
if bucket < 10:
return "new-origin"
return "legacy-origin"
每一层缓存都要回答
需要重点检查:
-
CDN 缓存键
-
Cookie 分流信息
-
Worker 路由
-
构建产物位置
缓存命中状态
可以检查响应头:
cf-cache-status: HIT
age: 1278
探针要与用户同构
测试请求必须尽可能接近真实浏览器请求。
-
使用相同的 User-Agent
-
携带必要 Cookie
-
使用正确 Host
-
排除本地缓存