2021-01-13 localforage , 前端存儲(chǔ)之indexedDB

localForage /'f?r?d?/ 飼料;草料;搜索

localForage 是一個(gè) JavaScript 庫(kù),通過(guò)簡(jiǎn)單類似 localStorage API 的異步存儲(chǔ)來(lái)改進(jìn)你的 Web 應(yīng)用程序的離線體驗(yàn)。它能存儲(chǔ)多種類型的數(shù)據(jù),而不僅僅是字符串。

localForage 有一個(gè)優(yōu)雅降級(jí)策略,若瀏覽器不支持 IndexedDB 或 WebSQL,則使用 localStorage。在所有主流瀏覽器中都可用:Chrome,F(xiàn)irefox,IE 和 Safari(包括 Safari Mobile)。

http://localforage.docschina.org/

前端存儲(chǔ)之indexedDB

在前一個(gè)階段的工作中,項(xiàng)目組要開(kāi)發(fā)一個(gè)平臺(tái),為了做出更好的用戶體驗(yàn),實(shí)現(xiàn)快速、高質(zhì)量的交互,從而更快得到用戶的反饋,要求在前端把數(shù)據(jù)存儲(chǔ)起來(lái),之后我去研究了下現(xiàn)在比較流行的前端存儲(chǔ)數(shù)據(jù)庫(kù),找到了indexedDB,于是便對(duì)indexedDB做了一個(gè)較為深入的探索,此文就是記錄探索過(guò)程的一些心得體會(huì)。

indexedDB為何物

在使用一個(gè)技術(shù)之前,先搞清楚它是什么,這對(duì)你的理解很重要,從DB就可以看出,它肯定是一個(gè)數(shù)據(jù)庫(kù),而說(shuō)到數(shù)據(jù)庫(kù),有兩種不同類型的數(shù)據(jù)庫(kù),就是關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù)如Mysql、Oracle等將數(shù)據(jù)存儲(chǔ)在表中,而非關(guān)系型數(shù)據(jù)庫(kù)如Redis、MongoDB等將數(shù)據(jù)集作為個(gè)體對(duì)象存儲(chǔ)。indexedDB就是一個(gè)非關(guān)系型數(shù)據(jù)庫(kù),它不需要你去寫一些特定的sql語(yǔ)句來(lái)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,因?yàn)樗莕osql的,數(shù)據(jù)形式使用的是json,

indexedDB出現(xiàn)的意義

也許熟悉前端存儲(chǔ)的會(huì)說(shuō),不是有了LocalStorage和Cookies嗎?為什么還要推出indexedDB呢?其實(shí)對(duì)于在瀏覽器里存儲(chǔ)數(shù)據(jù),你可以使用cookies或local storage,但它們都是比較簡(jiǎn)單的技術(shù),而IndexedDB提供了類似數(shù)據(jù)庫(kù)風(fēng)格的數(shù)據(jù)存儲(chǔ)和使用方式。

首先說(shuō)說(shuō)Cookies,英文直接翻譯過(guò)來(lái)就是小甜點(diǎn),聽(tīng)起來(lái)很好吃,實(shí)際上并不是,每次HTTP接受和發(fā)送都會(huì)傳遞Cookies數(shù)據(jù),它會(huì)占用額外的流量。例如,如果你有一個(gè)10KB的Cookies數(shù)據(jù),發(fā)送10次請(qǐng)求,那么,總計(jì)就會(huì)有100KB的數(shù)據(jù)在網(wǎng)絡(luò)上傳輸。Cookies只能是字符串。瀏覽器里存儲(chǔ)Cookies的空間有限,很多用戶禁止瀏覽器使用Cookies。所以,Cookies只能用來(lái)存儲(chǔ)小量的非關(guān)鍵的數(shù)據(jù)。

其次說(shuō)說(shuō)LocalStorage,LocalStorage是用key-value鍵值模式存儲(chǔ)數(shù)據(jù),但跟IndexedDB不一樣的是,它的數(shù)據(jù)并不是按對(duì)象形式存儲(chǔ)。它存儲(chǔ)的數(shù)據(jù)都是字符串形式。如果你想讓LocalStorage存儲(chǔ)對(duì)象,你需要借助JSON.stringify()能將對(duì)象變成字符串形式,再用JSON.parse()將字符串還原成對(duì)象。但如果要存儲(chǔ)大量的復(fù)雜的數(shù)據(jù),這并不是一種很好的方案。畢竟,localstorage就是專門為小數(shù)量數(shù)據(jù)設(shè)計(jì)的,所以它的api設(shè)計(jì)為同步的。而IndexedDB很適合存儲(chǔ)大量數(shù)據(jù),它的API是異步調(diào)用的。IndexedDB使用索引存儲(chǔ)數(shù)據(jù),各種數(shù)據(jù)庫(kù)操作放在事務(wù)中執(zhí)行。IndexedDB甚至還支持簡(jiǎn)單的數(shù)據(jù)類型。IndexedDB比localstorage強(qiáng)大得多,但它的API也相對(duì)復(fù)雜。對(duì)于簡(jiǎn)單的數(shù)據(jù),你應(yīng)該繼續(xù)使用localstorage,但當(dāng)你希望存儲(chǔ)大量數(shù)據(jù)時(shí),IndexedDB會(huì)明顯的更適合,IndexedDB能提供你更為復(fù)雜的查詢數(shù)據(jù)的方式。

https://www.cnblogs.com/liujianshe1990-/p/11059796.html
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容