JS代碼計(jì)算LocalStorage容量示例詳解
LocalStorage 容量
localStorage
的容量大家都知道是5M
,但是卻很少人知道怎么去驗(yàn)證,而且某些場景需要計(jì)算localStorage
的剩余容量時(shí),就需要我們掌握計(jì)算容量的技能了~~
計(jì)算總?cè)萘?/h2>
我們以10KB
一個(gè)單位,也就是10240B
,1024B
就是10240
個(gè)字節(jié)的大小,我們不斷往localStorage
中累加存入10KB
,等到超出最大存儲時(shí),會報(bào)錯(cuò),那個(gè)時(shí)候統(tǒng)計(jì)出所有累積的大小,就是總存儲量了!
注意:計(jì)算前需要先清空LocalStorage
let str = '0123456789' let temp = '' // 先做一個(gè) 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 { // 報(bào)錯(cuò)說明超出最大存儲 resolve(temp.length / 1024 - 10) clearInterval(timer) // 統(tǒng)計(jì)完記得清空 localStorage.clear() } temp += str }, 0) }) } (async () => { const total = await computedTotal() console.log(`最大容量${total}KB`) })()
最后得出的最大存儲量為5120KB ≈ 5M
已使用容量
計(jì)算已使用容量,我們只需要遍歷localStorage
身上的存儲屬性,并計(jì)算每一個(gè)的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`) })()
可以查看已用容量
剩余可用容量
我們已經(jīng)計(jì)算出總?cè)萘亢鸵咽褂萌萘浚敲词S嗫捎萌萘?= 總?cè)萘?- 已使用容量
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代碼計(jì)算LocalStorage容量示例詳解的詳細(xì)內(nèi)容,更多關(guān)于JS計(jì)算LocalStorage容量的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Layui table 組件的使用之初始化加載數(shù)據(jù)、數(shù)據(jù)刷新表格、傳參數(shù)
這篇文章主要介紹了Layui table 組件的使用之初始化加載數(shù)據(jù)、數(shù)據(jù)刷新表格、傳參數(shù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-09-09WEB前端開發(fā)框架Bootstrap3 VS Foundation5
WEB前端開發(fā)框架Bootstrap3 VS Foundation5,這篇文章主要介紹了Bootstrap3與Foundation5的五大區(qū)別,感興趣的小伙伴們可以參考一下2016-05-05bootstrap自定義樣式之bootstrap實(shí)現(xiàn)側(cè)邊導(dǎo)航欄功能
bootstrap自帶的響應(yīng)式導(dǎo)航欄是向下滑動的,有時(shí)滿足不了個(gè)性化的需求,需要做一個(gè)類似于android drawerLayout 側(cè)滑的菜單,這就是我要實(shí)現(xiàn)的bootstrap自定義側(cè)滑菜單。接下來通過本文給大家介紹bootstrap實(shí)現(xiàn)側(cè)邊導(dǎo)航欄功能,感興趣的朋友一起看看吧2018-09-09原生js實(shí)現(xiàn)html手機(jī)端城市列表索引選擇城市
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)html手機(jī)端城市列表索引選擇城市,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06thinkphp實(shí)現(xiàn)無限分類(使用遞歸)
這篇文章主要介紹了在使用遞歸的情況下thinkphp實(shí)現(xiàn)無限分類,感興趣的小伙伴們可以參考一下2015-12-12js的.innerHTML = ""IE9下顯示有錯(cuò)誤的解決方法
js的.innerHTML= "……"在ie9- 的版本顯示不正常,使用jquery可以解決,有類似問題的朋友可以參考下2013-09-09