Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

巨坑,前端存储的脏数据问题

  前端程序经常会使用一些本地存储方案来解决问题。比如基于 localStorage 的存储方案,或者是更原始的 Cookie 存储方案。然而,一旦涉及了存储,就可能产生脏数据问题。特别是前端这种服务器鞭长莫及的地方,一旦出现脏数据,其影响可能比数据库脏还可怕。
  假如产品发布了个新版本,而这个新版本中由于前端开发者的疏忽没有对旧版的本地存储做兼容,那么这个版本的程序就可以因为原来的数据是脏的而瘫痪。如果仅此而已的话,发现问题后发布一个 Hotfix 的版本即可。然而要是运维也疏忽,把这样一个错误的版本设置了长期缓存,那么对于一般用户而言,整个产品就要瘫痪很长一段时间了,甚至毁掉整个产品。
  上面描述的这件事虽然目前还没在我参与开发的产品上发生过,但总感觉要是不注意点什么,这个惨剧迟早要发生。其实几个月前也刚纠结过一个类似的问题 #20910 。当时的纠结点是要不要对已知 localStorage 中的 JSON 格式解析包裹 try-catch。结论是当然的,现在已经不想纠结这个问题了。但如果只是考虑要不要做 try-catch,我觉得已经远远不够了。即使成功得到了一个 JS 对象,也许程序中依赖了其某个不存在的属性,结果也可能抛出 Reference Error。所以应该对得到的对象属性做一次全面的验证才不容易出错。
  我会突然扯到这个问题是因为最近的业务代码中出现了好多由于本地存储造成的脏数据问题。但这些脏数据不是来自正常的版本迭代,而是由于各种开发环境切换造成的。但即便产品目前是稳定的,这么多可能存在脏数据的坑存在还是让我非常不安。
  总之,杜绝掉所有可能造成的脏数据,甚至提供一套脏数据的自我修复方案。这是我目前想做的。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^