
目前很多瀏覽器端據存儲方案都不適合存儲大量數據,例如Cookies容量不超過4KB,且每次請求都會發(fā)送回服務器lallorse容量在2.5~I0MB之間,且需要以學符申形式進行存儲。為此,瀏覽器端的數據存儲需要種新的技術方案,IndexedDB應運而生。
在了解IndexedDB之前,首先了解以下兩種不同類型的數據庫:關系型和文檔型(也稱為NoSQL或對象)。
關系型數據庫:如SQLServer.MySQL.Oracle,此類數據庫將數據存儲在表中。
文檔型數據庫:如MongoDB、CouchDB、Redis,此類數據庫將數據集作為個體對象存儲。
IndexedDB是HTML5提供的內置于瀏覽器中的數據庫,它可以通過網頁腳本程序創(chuàng)建和操作。IndexedDB允許儲存大量數據,并且提供查詢接口建立索引的功能。就數據庫類型而言,IndexedDB不屬于關系型數據庫(不支持SQL查詢語句),更接近文檔型數據庫。IndexedDB具備以下幾個特點:
(1)鍵值對儲存
IndexedDB內部采用對象倉庫(ObjectStore)存放數據,所有類型的數據都可以直接存入包括JavaScript對象。在對象倉庫中,數據以“鍵值對”的形式保存,每一個數據都有對應的鍵名且鍵名必須是唯一的,否則會拋出錯誤。
(2)異步API
IndexedDB數據庫在執(zhí)行增、刪、改、查操作時不會鎖死瀏覽器,用戶依然可以進行其他操作。與localStorage的同步設計相比,IndexedDB的異步設計可以防止大量數據讀寫時拖慢網頁加載速度,而影響用戶的網站體驗。
(3)支持事務
事務的概念在關系型數據庫中應用比較廣泛,這里讀者只需要簡單理解它的作用即可。舉個例子,一次操作需要在一 個數據表中同時插入兩條數據,第1條數據插入成功,第2條數據插入失敗。那么,對于整個操作來說,兩條數據都插入成功才算成功,失敗時便需要事務的回滾,將已經插入的第1條數據清除。
IndexedDB支持事務意味著在一系列操作步驟之中,只要有 一步失敗,整個事務就都取消,數據庫回到事務發(fā)生之前的狀態(tài),不存在只改寫一部分數據的情況。
在IndexedDB中,事務會自動提交或回滾。當請求一個事務時,必須指定事務的請求訪問模式。
(4)同域限制
IndexedDB也受到同域限制,每-一個數據庫對應創(chuàng)建該數據庫的域名,來自不同域名的網頁只能訪問自身域名下的數據庫,而不能訪問其他域名下的數據庫。
(5)存儲空間大
IndexedDB的存儲空間比localStorage大得多,一般來說不少于250MB。不同瀏覽器的限制不同,IE的儲存上限是250MB,Chrome和Opera瀏覽器的存儲上限是硬盤剩余空間的某個百分比,Firefox瀏覽器則沒有上限。
(6)支持二進制儲存
前8Cbexebnl1.8.If
IndexedDB不僅可以儲存字符串,還可以儲存二進制數據。
根據上述特點,IndexedDB適用于以下場景:
●用戶通過瀏覽器訪問應用程序。
開發(fā)人員需要在客戶端存儲大量的數據。
●開發(fā)人員需要在一個大型的數據集合中快速定位單個數據點。
●客戶端數據存儲需要事務支持。
瀏覽器的更新速度較快,因此關于瀏覽器對IndexedDB的支持,讀者可以到http:// caniuse. com/ # search= indexdb這個網址查看最新的支持情況。編寫本書時,該網址的頁面效果如圖11-17所示。

猜你喜歡:
怎樣使用select控件制作下拉菜單效果?
移動端touch事件解析判斷拖動方向
前端與移動開發(fā):Js中調試小技巧tips---斷點調試
什么是服務器端渲染?它有哪些優(yōu)點和不足?
傳智教育web前端與移動開發(fā)培訓