IndexedDB API

注意:此功能在 Web Workers 中可用。

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 事件處理函式的結果。

示例

規範

規範
Indexed Database API 3.0

另見