您现在的位置是:网站首页> 编程资料编程资料
JS代码计算LocalStorage容量示例详解_javascript技巧_
2023-05-24
271人已围观
简介 JS代码计算LocalStorage容量示例详解_javascript技巧_
LocalStorage 容量
localStorage的容量大家都知道是5M,但是却很少人知道怎么去验证,而且某些场景需要计算localStorage的剩余容量时,就需要我们掌握计算容量的技能了~~
计算总容量
我们以10KB一个单位,也就是10240B,1024B就是10240个字节的大小,我们不断往localStorage中累加存入10KB,等到超出最大存储时,会报错,那个时候统计出所有累积的大小,就是总存储量了!
注意:计算前需要先清空LocalStorage
let str = '0123456789' let temp = '' // 先做一个 10KB 的字符串 while (str.length !== 10240) { str = str + '0123456789' } // 先清空 localStorage.clear() const computedTotal = () => { return new Promise((resolve) => { // 不断往 LocalStorage 中累积存储 10KB const timer = setInterval(() => { try { localStorage.setItem('temp', temp) } catch { // 报错说明超出最大存储 resolve(temp.length / 1024 - 10) clearInterval(timer) // 统计完记得清空 localStorage.clear() } temp += str }, 0) }) } (async () => { const total = await computedTotal() console.log(`最大容量${total}KB`) })() 最后得出的最大存储量为5120KB ≈ 5M

已使用容量
计算已使用容量,我们只需要遍历localStorage身上的存储属性,并计算每一个的length,累加起来就是已使用的容量了~~~
const computedUse = () => { let cache = 0 for(let key in localStorage) { if (localStorage.hasOwnProperty(key)) { cache += localStorage.getItem(key).length } } return (cache / 1024).toFixed(2) } (async () => { const total = await computedTotal() let o = '0123456789' for(let i = 0 ; i < 1000; i++) { o += '0123456789' } localStorage.setItem('o', o) const useCache = computedUse() console.log(`已用${useCache}KB`) })() 可以查看已用容量

剩余可用容量
我们已经计算出总容量和已使用容量,那么剩余可用容量 = 总容量 - 已使用容量
const computedsurplus = (total, use) => { return total - use } (async () => { const total = await computedTotal() let o = '0123456789' for(let i = 0 ; i < 1000; i++) { o += '0123456789' } localStorage.setItem('o', o) const useCache = computedUse() console.log(`剩余可用容量${computedsurplus(total, useCache)}KB`) })() 可以得出剩余可用容量

以上就是JS代码计算LocalStorage容量示例详解的详细内容,更多关于JS计算LocalStorage容量的资料请关注其它相关文章!
您可能感兴趣的文章:
相关内容
- JS实现模态框拖拽动态效果_javascript技巧_
- 8个JavaScript条件语句优化小技巧分享_javascript技巧_
- 使用async await处理错误方法示例_JavaScript_
- node强缓存和协商缓存实战示例_node.js_
- JavaScript实现拖动模态框_javascript技巧_
- 实践示例理解js强缓存协商缓存_JavaScript_
- e.target与e.currentTarget对象的使用区别详解_javascript技巧_
- JS实现京东放大镜效果_javascript技巧_
- 前端必会的Webpack优化技巧_javascript技巧_
- Input标签自动校验功能去除实现_React_
