← [ BACK_TO_NOTES ]

DevTools Storage 调试

用 Application 面板定位 localStorage/sessionStorage 导致的旧配置、账号串态与状态恢复异常,并通过删除单个 key、刷新和写入来源追踪验证根因。

#debug #growing #frontend #browser #chrome-devtools

[!info] related notes

DevTools Storage 调试

症状

  • 页面一直读到旧配置;
  • 切换账号后本地状态串了;
  • UI 已重置,但刷新又恢复旧值;
  • 同一页面新开 tab 后表现不同;
  • 开发环境切换后仍加载上一环境状态。

第一步:确定是哪种 Storage

先区分:

localStorage
→ 同 origin 持久保存

sessionStorage
→ 与具体 tab/page session 绑定

它们都不会像 Cookie 那样自动随 HTTP 请求发送。

第二步:看真实 key/value

在 Application 中记录:

  • key;
  • value;
  • 哪个 origin;
  • 刷新前后是否变化;
  • 登录/退出/切环境前后是否变化。

不要只凭代码里“应该已经 clear”推断浏览器状态。

第三步:做最小破坏性实验

优先删除单个可疑 key,再刷新页面。

如果问题消失:

本地持久状态参与了根因链。

如果删掉后马上又出现:

应继续找是谁在应用启动时重新写入。

不要一上来 Clear site data,否则会同时清掉 Cookie、IndexedDB、Cache Storage 等证据。

第四步:追写入来源

一旦确定某 key 被错误恢复,继续找:

  • 初始化逻辑;
  • store persistence plugin;
  • route/bootstrap;
  • migration/default merge;
  • 跨 tab 同步逻辑。

Storage 面板告诉你“现在是什么”,不直接告诉你“谁写的”。

常见根因

  • logout 没删用户级 key;
  • key 没做 user/tenant namespace;
  • schema 升级后旧数据没 migration;
  • 默认值 merge 覆盖新状态;
  • 环境切换仍使用同 origin/localStorage;
  • sessionStorage 与 localStorage 使用预期搞反。

迁移检查

场景:用户 A 退出后用户 B 登录,却继承 A 的筛选条件和 workspace id。

不看正文:

  1. 判断先查 Cookie 还是 localStorage;
  2. 找到可疑 key 并做单 key 删除实验;
  3. 如果刷新后 key 被重新写回,如何继续追写入源;
  4. 说明 namespace / cleanup / migration 三种长期修复分别适合什么问题。
创建于 2026/4/13 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本