IndexedDB

實驗性質: 這是一個實驗中的功能 (en-US)
此功能在某些瀏覽器尚在開發中,請參考兼容表格以得到不同瀏覽器用的前輟。

IndexedDB 為用戶端的儲存用 API,可用於大量的結構化資料,並透過索引功能而高效率搜尋資料。DOM Storage (en-US) 適合儲存較少量的資料;IndexedDB 則適合大量結構化資料的儲存方案。

本篇文章僅為 API 物件的入門技術說明。若需進一步了解,則請參閱 IndexedDB 基本概念。更多細節則可參閱使用 IndexedDB

IndexedDB 提供不同 APIs 用於同步與非同步的存取作業。同步 API 僅能用於Web Workers (en-US) 之中,但尚未有瀏覽器支援同步 API。非同步 API 則用於 Web Workers 內外均可,但 Firefox 目前尚未建構。

非同步 API

非同步 API 不會阻塞呼叫它的執行緒。若要非同步存取資料庫,可於 window (en-US) 物件的 indexedDB 屬性上呼叫 open (en-US)()。此函式將回傳 IDBRequest 物件 (IDBOpenDBRequest),開始非同步存取資料庫;呼叫端程式利用 IDBRequest 物件上的事件來進行非同步溝通。

備註: 在舊版瀏覽器 (Gecko 16 版之前的 indexedDB 屬性;Chrome 中的 webkitIndexedDB;IE 10 中的 msIndexedDB) 中的 indexedDB 物件,均具備前綴屬性。

以下 API 在早期規範中有定義,但現已移除。這邊列出僅供參考:

除了非同步 API,也有應用在WebWorkers (en-US)內的同步 API,但請注意目前還沒有瀏覽器支援同步 API。這裡也提供 API 的同步版本 (en-US)

儲存限制

單一資料庫項目的容量/大小並沒有任何限制,但是各個 IndexedDB 資料庫的容量就有限制。此限制,還有使用者介面的斷言 (Assert) 方式,又將因瀏覽器而有所不同:

範例

Web 上的 IndexedDB 使用範例,是由 Marco Castelluccio 所提供。Marco 是 IndexedDB Mozilla DevDerby 的優勝者,而該得獎 Demo 為 eLibri,屬於函式庫與 eBook 閱讀器的 App。

另可參閱