ENGINEERING NOTE 20 / 50 · SMS

接码状态缓存如何避免误报完成

OPEN RAMBO ·

缓存期限应匹配生命周期敏感度。目录可以容忍的陈旧程度通常高于取消或退款结果。

本文由 OPEN RAMBO 发布。工程方案和伪代码用于说明设计,不是现有产品 API 文档;示例数字均为演示。

分离目录与订单缓存

不要把通用产品缓存策略用于活跃订单。缓存键限定已授权用户与订单,确保共享中间层不会把认证收码响应缓存给其他用户。

状态迁移时失效

取消请求成功不一定是终态取消。权威事件到达后使旧视图失效并重读版本。响应带版本或更新时间,客户端可丢弃迟到旧响应。

避免乐观显示资金完成

界面可提前禁用按钮,但账本确认前不能宣布退款完成。离线时显示最后更新时间。缓存的收码结果仅对同一授权用户展示,并遵循数据处理规则。

示意流程

if response.version < rendered.version:
    discard(response)
else:
    render(response.state, response.updated_at)

如何验收

将旧等待响应延迟到已收码响应之后,页面不应退回等待。

继续阅读