项目使用的store.js库
store.js库不能管理localStorage中的过期项到时清除,只能在再次调用get的时候才做处理,如果一直不调用get,过期了也还是占用着空间。溢出后,再储存项目时setItem方法会报错exceeded error。特别要注意,如果store.js加载时容量已经满了,store.js由于不能通过setItem方法储存,test返回false,导致不会挂载localStorage库,之后调用store的方法都会报错,因为store属性为undefined。
解决方案:1.挂载store.js前先检测localStorage能否setItem(保证store加载不出错)
2. 加载store.js后,遍历localStorage,用store去get每一项(即清理了过期项)
3. 重写store的set方法,先判断能否setItem(放在try catch里),溢出的话先清空localStorage,再继续。
实际使用时,只执行第二种就可以避免大多数场景下溢出的情况。