localstorage容量超过了怎么办? --某次面试的问题

大半年前的三大厂其中一家的面试题,面试官问的这个问题,如果写入localstorage的时候发现容量超出了怎么办(也就是一般标准的5m),当时比较紧张蒙了,现在想来在不借助其他存储情况下,如果要强行写入己方的数据,是不是在检测到报错后,可以调用一个localstorage.clear()把用户其他localstorage清掉,然后写入自己的数据(当然这么做感觉就非常的暴力和qj用户),求大神指点一二,google和百度了一圈几乎没什么人提到这个需求。

阅读 22.3k
3 个回答

localstorage存储不是5m 是每个域5m 超了申请其他的域/修改ng配置 postmessge通信往其他域上存取
感觉删别人的数据不好吧 超了就不存了貌似可以理解为可以不存 那就直接不存了呗

这里有两个链接值得看看:

https://www.raymondcamden.com...

https://stackoverflow.com/que...

如果没时间看,那简单说一下结论:

当空间不够时,
浏览器会怎么办:

  • 不存储数据, 也不会覆盖现有数据。
  • 引发 QUOTA_EXCEEDED_ERR 异常。

作为开发人员的我们怎么办:

  • 几乎所有客户端存储选项在配额方面都非常糟糕。值得引起关注。
  • 需要跟踪客户端存储使用情况。例如, 如果您保存了最后10个搜索, 以便之后显示给用户, 请知道并在某处记下它, 以便在将来使用客户端存储时 ( "嘿, 我们可以缓存一些字体吗? ") 您可以检查并查看已存储的内容, 并查看是否可能已达到极限。
  • 把一切都try/catch好吗?嗯-也许吧;) "超级严格让做一切完美" --是的, 但"我生活在现实世界" --可能是过度了。再强调一下, 只要你跟踪你在做什么, 我想你会没事的。

我是题主,感谢楼上大佬的指点,因为此前没有找到合适的关键词,所以一直找不到好的答案,经过大佬提点发现localstorage存在着跨域写入读取的操作,下面找到一个靠谱的实践教程localstorage实现跨域读取和写入

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏