陌上寒

陌上人如玉
公子世无双
一七令 · 雪

最新发布

7.12 离线优先与请求队列-陌上寒

7.12 离线优先与请求队列

离线优先的本质是「把『本地数据库』当成唯一读写入口,把『网络同步』当成后台异步过程」——所以真正要设计的不是「缓存」,而是「队列的可靠性(重试、顺序、幂等、死信)、冲突解决、以及同步状态的可见性」。

7.11 tRPC-陌上寒

7.11 tRPC

tRPC 的卖点是「端到端类型安全,且零额外定义」——你只写一次服务端函数(含 zod 输入校验),客户端直接 import 那个类型就有了完整的自动补全与类型检查,既不需要 schema 文件,也不需要 codegen;代价是「只在 TypeScript 全家桶同仓时成立」。

7.10 GraphQL / Apollo / urql-陌上寒

7.10 GraphQL / Apollo / urql

GraphQL 的客户端价值不在「少请求几个接口」,而在「声明式地描述『这个组件需要哪些字段』」+「规范化缓存让『改一个实体,所有引用它的地方自动更新』」;而它的坑集中在「两级错误(network vs graphQL)」「缓存配置(否则不更新或更新错)」「分页与缓存的配合」三处。

7.8 轮询与实时数据-陌上寒

7.8 轮询与实时数据

实时数据有四种方案——轮询(简单但浪费)、SSE(服务端单向推送,浏览器自动重连)、WebSocket(双向、需要自己做心跳与重连)、长轮询(兼容性最好但服务器压力大);选择依据是「是否需要双向 + 实时性要求 + 基础设施成本」。

7.5 缓存、失效与重试-陌上寒

7.5 缓存、失效与重试

缓存的核心是「这份数据什么时候算新鲜、什么时候该重新拉、没人用的时候什么时候回收」——对应 staleTime(新鲜期)、失效(invalidateQueries)与 gcTime(回收时间);重试则要「只重试值得重试的错误」。