标题:91吃瓜收藏方式为什么总出问题?从原理标注一次你就懂

开头一句话点题:收藏看似简单,实际牵涉前端、后端、缓存、并发与同步等多层次问题,弄清原理后很多常见故障一眼就能看懂。
一、常见症状(你可能遇到的)
二、核心原理(逐条标注,弄懂每个环节) 1) 前端交互:用户点击 → 发起请求(POST/PUT/DELETE)到收藏接口。常见做法是乐观更新(先更新 UI,再等待服务器确认)。 2) 网络与重试:网络丢包或超时时,客户端可能自动重试,导致同一操作被多次发送。 3) 后端接口幂等性:如果后端接口不是幂等或没有防重处理,多次请求会产生重复记录或异常。 4) 数据库写入与唯一约束:是否对 (userid, itemid) 做唯一索引?若没有,会出现重复收藏条目。 5) 缓存层(Redis、CDN):出于性能,收藏状态常缓存在Redis或前端localStorage。缓存更新延迟或未失效,会导致显示与数据库不一致。 6) 并发写入与事务:并发请求同时检查“是否已收藏”再写入,会出现竞态(race condition)。需要用事务、悲观/乐观锁或原子操作解决。 7) 异步处理与最终一致性:一些系统把写操作放到消息队列处理以提高吞吐,导致前端短时间看不到最新状态(延迟一致性)。 8) 鉴权与Token:登录过期或跨域Cookie策略变化,会让请求被拒绝但前端仍显示已收藏。 9) 客户端存储与同步:移动端或离线模式用localStorage/IndexedDB缓存,恢复网络后同步逻辑若设计不当会覆盖服务器状态。 10) 接口返回与错误处理:接口未返回明确成功/失败码或前端没有正确解析,导致状态展示错误。
三、逐项排查与快速修复思路(开发者方向)
四、给产品和运营的小建议
五、给普通用户的实用技巧
结语:收藏看起来只是“打一个标签”,但背后涉及原子性、并发、缓存和同步等分布式系统问题。了解这些原理后,遇到问题就知道从“防重、原子写入、缓存失效、接口返回”这几条线去排查,绝大多数毛病都能快速定位并修复。