CACHE VISIBILITY DISPATCH · 离线模拟

写成功以后,谁能看见新结果?

先提交数据库事实,再按读取方式选择最小刷新范围。改变场景与策略,观察当前请求、下次访问和其他路径分别拿到新值、旧值还是 stale 值。

失败路径:零写入、零失效、零跳转 缓存 API 与 redirect 都必须位于确认提交之后;多调用几个并不会让模型更可靠。

可见性调度板

DB v18 → DB v19
  1. 认证 / 授权 / 验证 等待运行
  2. 事务提交 等待运行
  3. 最小刷新 等待运行
  4. 观察读取 等待运行
  5. 最后 redirect 等待运行

写入前

数据库
v18 · 12 项
缓存
tag 命中旧快照 v18

Action 返回时

数据库
尚未运行
缓存
尚未选择可见性

三位观察者看到什么

“数据库已提交”不等于“每个读取端都已拿到新值”
当前请求 等待

尚未读取

运行后检查同一次 Action 或其返回视图是否能读到新事实。

下次访问 等待

尚未访问

运行后检查第一个后续访问者会等待新值,还是先收到 stale 值。

其他路径 等待

范围未知

运行后检查共享 tag 的页面或未被指定的路径是否也发生变化。

刷新范围:等待选择

正确策略不是范围最大,而是与读取方式匹配的最小范围。

控制流记录

  1. 等待运行这次提交。

挑战 01 · 读己之写

加载题目中…

选择一个答案后,这里会解释当前策略为何匹配或不匹配。