浏覽器(qì)數據庫 IndexedDB是什(shén)麽,能(néng)做什(shén)麽呢(ne)?由于浏覽器(qì)的功能(néng)越來(lái)越強,越來(lái)越多的網站(zhàn)開始考慮在客戶機存儲大量數據,以便減少從服務(wù)器(qì)獲取數據,直接從本地獲取數據。那麽浏覽器(qì)數據庫 IndexedDB是什(shén)麽,能(néng)做什(shén)麽呢(ne)?今天專注于研究服務(wù)器(qì)數據庫的微子(zǐ)網絡就(jiù)帶着大家一(yī)起來(lái)看一(yī)下(xià),希望能(néng)夠對大家有所幫助。
沒有一(yī)種浏覽器(qì)數據存儲方案适合存儲大量數據: Cookie大小不超過4 KB,并且每次請求都被發回給服務(wù)器(qì); LocalStorage在2.5到10 MB之間(jiān)(每一(yī)個(gè)浏覽器(qì)不同),并且沒有提供搜索功能(néng),也(yě)無法建立定制的索引。因此,需要一(yī)種新(xīn)的解決方案,這(zhè)就(jiù)是 IndexedDB誕生(shēng)的背景。
在 IndexedDB中,我們可以通過開發工具看到存儲數據:
特性
通常來(lái)講, IndexedDB是由浏覽器(qì)提供的本地數據庫,網頁腳本可以創建和操作(zuò)。IndexedDB支持大量數據的存儲、提供查詢接口和建立索引。這(zhè)是 LocalStorage沒有的東西(xī)。IndexedDB在數據庫類型上(shàng)不屬于關(guān)系型數據庫(不支持 SQL查詢語句),接近 NoSQL數據庫。
IndexedDB有下(xià)列特征:
(1)鍵值對存儲。IndexedDB内部使用了(le)對象倉庫(objectstore)來(lái)存放(fàng)數據。可以直接存入所有類型的數據,包括 JavaScript對象。在對象倉庫中,數據以"鍵-值對"的形式保存,每個(gè)數據記錄有相應的主鍵,主鍵是唯一(yī)的,不得重複,否則将抛出錯誤。
(2)異步。IndexedDB操作(zuò)時(shí)并沒有鎖住浏覽器(qì),用戶仍然可以執行其他操作(zuò),這(zhè)與 LocalStorage的操作(zuò)是同步的。異步設計就(jiù)是防止讀取和寫入大量數據,導緻網頁性能(néng)緩慢(màn)。
(3)支助服務(wù)。IndexedDB支持事(shì)務(wù)(transaction),意思是在一(yī)系列操作(zuò)步驟中,在一(yī)步失敗時(shí)整個(gè)事(shì)務(wù)被取消,數據庫回滾到事(shì)務(wù)發生(shēng)前的狀态,并且沒有隻重寫數據的一(yī)部分(fēn)。
(4) IndexedDB具有同源限制,每個(gè)數據庫對應地創建其域名。頁面隻能(néng)在自己的域名下(xià)訪問數據庫,無法訪問跨域數據庫。
(5)大型 IndexedDB存儲空間(jiān)比 LocalStorage大得多,一(yī)般不少于250 MB,甚至沒有上(shàng)限。
(6)支持二進制存儲。IndexedDB不僅存儲字符串,而且存儲了(le) ArrayBuffer對象和 Blob對象。
IndexedDB數據庫的使用目前可以在 HTTP協議(yì)中直接使用,而 cacheStorage緩存必須使用 HTTPS協議(yì)。因此從應用場(chǎng)景來(lái)看, IndexedDB數據庫還是相當廣泛的,考慮到IE10也(yě)支持,所以基本可以肯定,在實際項目中應用是絕對不成問題的。
舉例來(lái)說(shuō),頁面中一(yī)些(xiē)不經常變化(huà)的結構化(huà)數據,可以使用 IndexedDB數據庫在本地存儲,從而幫助提高頁面的交互性能(néng)。
Copyright © 2013-2016 WWW.VZIDC.COM . All Rights Reserved. 微子(zǐ)網絡 版權所有 江蘇微子(zǐ)網絡科技有限公司