🚀 SWR 策略是什么?
欢迎来到我的博客文章!所有文章都是满满的前端干货,文章简明扼要。
🌟 核心思想(一句话理解):
当用户需要数据时:
- 立刻返回已有缓存(哪怕它已过期)→ 保证响应速度与离线可用性
- 同时在后台发起新请求,更新缓存 → 保证数据最终一致性
- 下次访问时,直接使用最新数据
解决的核心痛点
这解决了传统"先请求 → 再渲染"模式的两大痛点:
✅首屏/切换页面不白屏
有缓存兜底,用户体验更流畅
✅数据不会"永远过期"
后台自动刷新,保证数据新鲜度
🎯 SWR 与传统缓存策略对比
| 策略 | 行为 | 用户体验 | 适用场景 |
| 无缓存 | 每次都发请求 → 等待 → 渲染 | ⚠️ 白屏、卡顿 | 实时性极强的场景(如交易下单) |
| 纯本地缓存 | 读缓存(永不过期)→ 不发请求 | ✅ 快,但 ❌ 数据陈旧 | 静态配置、低频更新数据 |
| TTL 缓存 | 缓存有效期内读缓存,过期后发请求 → 等待 → 更新 | ⚠️ 过期瞬间仍白屏 | 中等要求场景 |
| ✅ SWR | 立即返回缓存(哪怕过期)+ 后台更新 | ✅ 瞬时响应 + 自动保鲜 | ✅ 绝大多数业务场景(列表、详情、用户资料等) |
🌟 SWR 的核心优势:
- 🏝️ 瞬时响应:用户操作立即得到反馈,无需等待网络请求
- ⚡ 离线可用:即使网络断开,也能显示缓存的内容
- 🎯 自动保鲜:后台静默更新,用户无感知获得最新数据
- 🔧 降低服务器压力:减少不必要的重复请求
SWR 工作流程
📝 典型的 SWR 执行流程: - 用户访问页面/组件 → 检查本地缓存
- 如果有缓存 → 立即渲染缓存内容(即使已过期)
- 同时发起后台请求 → 获取最新数据
- 请求完成后 → 更新缓存并重新渲染
- 下次访问 → 直接使用最新的缓存数据
实际应用场景
🎯 最适合 SWR 的场景:
- 用户列表/详情页:用户信息变化不频繁,但需要快速展示
- 商品列表:价格可能变化,但展示速度更重要
- 文章/新闻列表:内容相对稳定,用户体验优先
- 配置信息:变化频率低,但需要保证最终一致性
- 社交媒体动态:内容更新频繁,但即时性要求不极端
💡 SWR 的核心价值: 在用户体验和数据新鲜度之间找到最佳平衡点,让用户既能获得流畅的交互体验,又能确保看到的数据是相对新鲜的。