此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。

View in English Always switch to English

IndexedDB API

備註: 此功能可在 Web Worker 中使用。

IndexedDB 是一種底層 API,用於在用戶端儲存大量結構化資料(包括檔案/Blob)。該 API 使用索引來實現對資料的高效能搜尋。雖然 Web Storage 對於儲存較少量的資料很有用,但對於儲存大量的結構化資料則較不適用。IndexedDB 提供了解決方案。這是 MDN IndexedDB 內容的主要登陸頁面——我們在此提供完整的 API 參考文件、使用指南、瀏覽器相容性細節,以及一些關鍵概念的說明。

關鍵概念與用法

IndexedDB 是一個交易式資料庫系統,就像 SQL 基礎的關聯式資料庫管理系統(RDBMS)。然而,不同於 SQL 基礎的 RDBMS 使用固定欄位的表格,IndexedDB 是一個 JavaScript 基礎的物件導向資料庫。IndexedDB 讓你儲存和檢索以索引的物件;任何結構化複製演算法支援的物件都能被儲存。你需要指定資料庫綱要,開啟與資料庫的連線,然後在交易序列中檢索和更新資料。

備註:就像大多數的 web 儲存解決方案,IndexedDB 遵循同源政策。因此雖然你可以存取同一個網域內的儲存資料,但你無法跨網域存取資料。

同步與非同步

使用 IndexedDB 執行的操作是非同步完成的,以免阻塞應用程式。

儲存限制與驅逐標準

有許多 web 技術在用戶端(亦即在你的本機磁碟上)儲存各種類型的資料。IndexedDB 是最常被討論的。瀏覽器計算要分配多少空間給 web 資料儲存,以及當達到限制時要刪除什麼內容的過程並不簡單,且不同瀏覽器之間有所差異。瀏覽器儲存配額與驅逐標準試圖解釋其運作方式,至少在 Firefox 的情況下是如此。

介面

要存取資料庫,請呼叫 window 物件 indexedDB 屬性上的 open()。此方法回傳一個 IDBRequest 物件;非同步操作透過在 IDBRequest 物件上觸發事件來與呼叫的應用程式通訊。

連線到資料庫

IDBFactory

提供對資料庫的存取。此類型的物件是全域 Window.indexedDBWorkerGlobalScope.indexedDB 屬性的值。因此它是 API 的進入點。

IDBOpenDBRequest

代表開啟資料庫的請求。

IDBDatabase

代表與資料庫的連線。這是獲取資料庫交易的唯一途徑。

檢索和修改資料

IDBTransaction

代表一個交易。你在資料庫上建立一個交易,指定範圍(例如你想要存取哪個物件儲存區),並決定你想要的存取類型(唯讀或讀寫)。

IDBRequest

處理資料庫請求並提供結果存取的通用介面。

IDBObjectStore

代表一個物件儲存區,允許存取 IndexedDB 資料庫中的一組資料,透過主鍵尋找。

IDBIndex

也允許存取 IndexedDB 資料庫中的資料子集,但使用索引來檢索紀錄而不是主鍵。這有時比使用 IDBObjectStore 更快。

IDBCursor

迭代物件儲存區和索引。

IDBCursorWithValue

迭代物件儲存區和索引並回傳游標目前的值。

IDBKeyRange

定義一個鍵範圍,可用於從資料庫中檢索特定範圍內的資料。

自訂事件介面

此規範使用以下自訂介面觸發事件:

IDBVersionChangeEvent

IDBVersionChangeEvent 介面表示資料庫的版本已經改變,這是 IDBOpenDBRequest.onupgradeneeded 事件處理函式的結果。

範例

規範

Specification
Indexed Database API 3.0

參見