面试官居然要我用JS代码计算LocalStorage容量!
作者:Sunshine_Lin
来源:SegmentFault 思否社区
前言
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`)
})()
已使用容量
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`)
})()
关注公众号:拾黑(shiheibook)了解更多
赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
- LeaferJS:革新级图形引擎,前端开发的新利器!
- 韩元汇率对人民币2023年11月1日
- 社区精选|一个简单的案例入门 gRPC
- Niantic:未来AR重要场景,VPS众包3D地图到底是啥?
- 通信行程卡正式下线!三大运营商:同步删除用户行程相关数据
- 2022中国企业500强发布:三大运营商跻身榜单前100
- 为什么那么多人非要离线?
- 网信办发布《网络数据安全管理条例》:用户终止服务后应在十五个工作日内删除信息
- 年度盛宴即将上演,第十二届中国(泰州)国际医药博览会将于23日开幕
- 亿欧智库发布《2021年科技赋能中医药产业发展报告》
- (待会删)粉丝永久白嫖,新发现的外·卖漏·洞!希望不要被封杀!
- 永久封禁!印度政府再作妖,涉及微信、TikTok等59款App
赞助链接