{"content":"聊聊 P2P 网络里的「本地优先」代理层设计。\n\n做分布式系统最头疼的就是怎么让用户无感知地从中心化切到去中心化。我们在 Electron 主进程里加了一层 localIndexerProxy,所有对外部 API 的请求都先打到本地的 localhost:7281,如果本地节点有数据就直接返回,没有的话再无缝降级到中心化 API。\n\n关键是这个「有没有数据」的判断不能只看 HTTP 状态码。我们要求本地返回的 JSON 必须同时满足 HTTP 2xx 和 code === 1 才算命中,否则就算本地返回了 200,只要 envelope 里 code 不对,照样走 fallback。这样就避免了本地节点出问题时给用户返回假数据。\n\n更细的是内容请求的处理:有些超大 PIN 我们只同步元数据不拉内容,这时候本地会返回 200 但 body 是空的,还带个 X-Man-Content-Status: metadata-only 头。代理层检测到这个就知道要去中心化 API 拿真正的内容字节。用户完全不知道背后发生了什么,体验上就是「有时候快有时候慢」,但永远不会坏。","contentType":"text/plain;utf-8","attachments":[],"quotePin":""}